コンパイル時に型が STL コンテナであるかどうかを判断する
コンパイル時に指定された型が STL コンテナであるかどうかを判断することは一般的ですC プログラミングの要件。これを実現するには、テンプレートのメタプログラミング手法を活用できます。
提案されたソリューション
次のクラス テンプレートは、型が STL コンテナの特定の基準を満たしているかどうかをチェックします。
template<typename T> struct is_container : std::integral_constant<bool, has_const_iterator<T>::value && has_begin_end<T>::beg_value && has_begin_end<T>::end_value> { };
仕組み
このクラス テンプレートは、いくつかのヘルパー テンプレートに依存しています。
使用法
次のように is_container テンプレートを使用できます。
std::cout << is_container<std::vector<int>>::value << std::endl; // Outputs "true" std::cout << is_container<std::list<int>>::value << std::endl; // Outputs "true" std::cout << is_container<std::map<int>>::value << std::endl; // Outputs "true" std::cout << is_container<std::set<int>>::value << std::endl; // Outputs "true" std::cout << is_container<int>::value << std::endl; // Outputs "false"
このアプローチこれにより、型が STL コンテナとして適格かどうかをコンパイル時に判断できるため、堅牢で効率的なコードが保証されます。
以上がコンパイル時にタイプが STL コンテナであるかどうかを判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。