2012-01-27 48 views
2

允許使用lambda函數作爲模板參數的默認值嗎?有問題的代碼片段是:模板參數值中的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

不是。一個lambda是一個對象,而不是一個類型。解決這個問題

一種方法是在

template<typename K, typename E, typename C = std::less<K>> 
class FooBar 
{ 
    typedef C compare_fn; 
}; 
使用命名類,