我试图看看这是否可能在C++ 14泛型lambda中,但我找不到正确的方式表达它(或者可能是不可能的).简化的例子是:
auto confirmOperation = [](auto pr){
assert(pr.second);
};
Run Code Online (Sandbox Code Playgroud)
我们的想法是,如果你通过它的std::pair其中second一个bool(比如什么是从返回emplace功能),它可以看看这个布尔.
如果这是一个模板参数,我可以明确地显示该pair对的类型是通用的,但我不认为这是可能的lambda?因此,我将整个参数标记为通用,因此编译器似乎无法推断出我将它传递给地图的返回emplace().
有什么办法吗?
eca*_*mur 14
您可以使用enable_if以下方法约束lambda :
auto confirmOperation = [](auto pr) ->
std::enable_if_t<std::is_same<decltype(pr.second), bool>::value> {
assert(pr.second);
};
Run Code Online (Sandbox Code Playgroud)
例子.