免責事項:私はこの質問decltype
を見てきましたが、受け入れられた回答で提案されている をそのためにどのように使用できるかを正確に尋ねています。
基本的に、コンテナ全体に適用したときに使用を簡素化する標準アルゴリズム用の小さなラッパーを実装することを試みます (少しは楽しみ、少しは便利、そして少しは学習目的)。主なアイデアは、アルゴリズムを適用する必要があるコンテナを取り除き.begin()
、単に指定することです。.end()
次に、標準アルゴリズムの戻り値の型自体からラッパーの戻り値の型を推測することが可能かどうか (ちなみに愚かではない) を知りたいです。
とりあえず、次のことを試しました(std::countの場合):
template<class Cnt,
class T>
inline
auto count(Cnt _cnt, const T& _val) -> decltype(std::count){}
しかし、コンパイル時にエラーが発生しました:
関数テンプレート ''unknown-type' ragut::count(Cnt,const T &)' の特殊化に失敗しました
と言うだけでは不十分かもしれないと考えdecltype(std::count)
、次のようなより具体的な引数を要求したと仮定しました。
decltype(std::count<std::iterator<std::input_iterator_tag,Cnt::value_type> >)
しかし、これは同じエラーを出しました。
それが実際に愚かではなく、それが可能かどうかを知りたいです。