[C++20]コンセプト

コンセプトは、採用するテンプレートに対して、必要なメソッドを制約することができる。Javaのインターフェースに近い機能となる。

ヘッダー<concepts>には、型の関係や種類をチェックするための機構が用意されている。

サンプルにあるのだが、次のような定義を書くことで、movableなTと、movableでないTに分けることができる。とても興味深い。

namespace std {

template<class T>

concept movable = ...;

}

template<std::movable T>

void f(const char* name) {

  std::cout << name << " is movable" << std::endl;

}

template<typename T>

void f(const char* name) {

  std::cout << name << " is not movable" << std::endl;

}


f<int>("int");

f<void>("void");

前の記事:[C++17]構造化束縛 (structured binding) 次の記事:[C++11]クラス継承させないfinal

コメントする