[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 |
新着情報
2021.03.26
2021.03.23
2021.03.16
2021.02.26
2021.02.24
2021.02.22
2021.01.19
2021.01.04
2020.12.29
2020.12.28
コメントする