C++ Conceptsとは?基本と実践的な使い方を解説

C++20において、Conceptは新しい言語の機能であり、タイプの要求や制約を定義するために使用されます。 Conceptは、特定の要件を満たすことを保証するために、関数テンプレート、クラステンプレート、通常の関数の引数の型を制約するために使用することができます。

Conceptは、クラスまたは関数のインタフェースを記述するために使用されることがあり、必要な引数の型が持つべきメンバ関数、型メンバ、関数のシグネチャなどを指定することができます。Conceptを使用すると、コードの可読性と保守性を向上させることができるだけでなく、コンパイル時により良いエラーチェックとヒントを提供することも可能です。

C++で簡単な例を示し、Conceptを使用して単純な型要件を定義する方法を示しています。

template <typename T>
concept Numeric = std::is_arithmetic_v<T>;

template <Numeric T>
T add(T a, T b) {
    return a + b;
}

int main() {
    int result = add(2, 3); // 编译通过
    // float result = add(2.5, 3.5); // 编译错误,float不符合Numeric要求
    return 0;
}

上記の例では、数値型(Numeric)のConceptを定義し、パラメータの型が算術型であることを要求しました。その後、Numericの要件を満たすパラメータ型のみを受け入れるadd関数のテンプレートを定義しました。最後に、main関数でadd関数を呼び出す際、int型のパラメータが有効であること、一方でfloat型のパラメータがコンパイルエラーを引き起こすことが確認できます。これにより、C++におけるConceptの使用法が示されています。

bannerAds