gpt4 book ai didi

c++ - std::pair 的通用 lambda 参数

转载 作者:可可西里 更新时间:2023-11-01 17:20:54 26 4
gpt4 key购买 nike

我想看看这在 C++14 通用 lambda 中是否可行,但我找不到正确的方式来表达它(或者可能是不可能的)。简化的例子是:

auto confirmOperation = [](auto pr){
assert(pr.second);
};

这个想法是,如果你向它传递一个 std::pair,其中 second 是一个 bool(例如从emplace 函数),可以看这个bool。

如果这是一个模板参数,我可以显式地显示 pair 以及 pair 的类型,但我认为这对 lambda 来说不可能吗?因此,我将整个参数标记为通用的,因此编译器似乎无法推断出我正在向它传递 map 的 emplace() 的返回值。

有什么办法吗?

最佳答案

您可以使用 enable_if 来约束 lambda:

auto confirmOperation = [](auto pr) ->
std::enable_if_t<std::is_same<decltype(pr.second), bool>::value> {
assert(pr.second);
};

Example .

关于c++ - std::pair 的通用 lambda 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37749044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com