c++ - 创建与推导参数具有相同类型的局部变量的最简单方法是什么?

标签 c++ c++11 lambda auto template-argument-deduction

即:

[](auto const& foo) {
    ??? bar; // should be same base type as foo, minus const&
}

到目前为止,我正在使用:

typename std::remove_const<typename std::remove_reference<decltype(foo)>::type>::type combination

但我真的希望有更简单的选择!

最佳答案

std::decay<decltype(whatever)>::type , 或 decay_t如果你的 std库已更新。

它模拟各种函数参数衰减。如果您的 arg 是函数引用,它会处理。在引用数组时,它也会生成一个指针,这不太理想。

如果您想以不同的方式处理这些问题,则必须自己动手。

关于c++ - 创建与推导参数具有相同类型的局部变量的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24093289/

相关文章:

c++ - 如何确保返回 vector <unique_ptr> 的常量

c++ - 如何实际执行五项规则?

algorithm - 是否可以有效地评估 lambda 演算项?

c++ - MS Visual C++ 发布版和调试版之间行为不同的可能原因

c++ - 找到填充矩形的最少 MS Paint 操作数

c++ - RegQueryValueEx 和 REG_BINARY

c++ - C++ 类中的 private const 是多余的吗?

c++ - uninit_member : Non-static class member m_wszParams is not initialized in this constructor nor in any functions that it calls in C++

c++ - std::thread vs pthread,我做错了什么?

c# - Dispatcher.BeginInvoke ,尝试使用 lambda 从文本 block 获取字符串集,但出现转换错误