2012-01-27 28 views
2

テンプレート引数のデフォルト値としてラムダ関数を使用することは許されていますか?問題のコードの断片では、次のようになります。テンプレート引数値のLambdas

template <typename K, typename E, typename C = [](const K& l, const K& r) { return (l < r); }> 
class FooBar 
{ 
    typedef C compare_fn; 
}; 

そうでない場合は、なぜ、そしてどのように関数へのポインタとは別に、最も無難代替だろうか? TIA。

答えて

4

いいえλはオブジェクトであり、型ではありません。この問題を解決するために

一つの方法は、

template<typename K, typename E, typename C = std::less<K>> 
class FooBar 
{ 
    typedef C compare_fn; 
}; 
のように、という名前のクラスを使用することです
関連する問題