【发布时间】:2015-07-06 19:17:17
【问题描述】:
通用 lambda 可以利用 “替换失败不是错误” 规则吗?示例
auto gL =
[](auto&& func, auto&& param1, auto&&... params)
-> enable_if_t< is_integral<
std::decay_t<decltype(param1)>
>::value>
{
// ...
};
auto gL =
[](auto&& func, auto&& param1, auto&&... params)
-> enable_if_t< !is_integral<
std::decay_t<decltype(param1)>
>::value>
{
// ...
};
是否有任何解决方法或计划将其包含在语言中?此外,由于通用 lambda 是底层的模板化函数对象,这不能完成是不是有点奇怪?
【问题讨论】:
-
您的 lambda 似乎是 work just fine 所写的?
-
@KerrekSB 好的,这太棒了,我应该改写问题以关注 SFINAE 位吗?
-
我不知道你需要解决什么问题...
-
Timer t; return f(args...);,Timer::~Timer打印结果。 -
sfinae 仅在第一个错误时有更好的过载选择时才起作用。由于您不能重载 lambda,因此尚不清楚 sfinae 将实现什么。
标签: c++ lambda c++14 sfinae generic-lambda