是否允许使用lambda函数作为模板参数的默认值?有问题的代码片段是:
template <typename K, typename E, typename C = [](const K& l, const K& r) { return (l < r); }>
class FooBar
{
typedef C compare_fn;
};
如果不是,为什么如此,除了功能指针之外,什么是最可行的替代方案? TIA。
答案 0 :(得分:4)
没有。 lambda是一个对象,而不是一个类型。
解决此问题的一种方法是使用命名类,如
template<typename K, typename E, typename C = std::less<K>>
class FooBar
{
typedef C compare_fn;
};