是否允许使用 lambda 函数作为模板参数的默认值?有问题的代码片段是:
template <typename K, typename E, typename C = [](const K& l, const K& r) { return (l < r); }>
class FooBar
{
typedef C compare_fn;
};
如果不是,为什么会这样,除了指向函数的指针之外,最可行的替代方案是什么? TIA。
最佳答案
没有。 lambda 是一个对象,而不是类型。
解决此问题的一种方法是使用命名类,如下所示
template<typename K, typename E, typename C = std::less<K>>
class FooBar
{
typedef C compare_fn;
};
关于c++ - 模板参数值中的 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9027316/