Constexpr lambda by default?
Constexpr lambda by default?
根据n4487和其他c++17参考,将会有新的lambda函数说明符- constexpr
,如果出现"显式指定函数调用操作符是constexpr
函数"。我理解在lambda中使用常量表达式的动机。令我感兴趣的是提案的第四点:
4)如果在lambda声明符中省略了
constexpr
说明符,则如果满足constexpr
函数的要求,则函数调用操作符(或模板)为constexpr
。
这让我想到两个问题:
- 为什么需要
constexpr
规范符?看起来lambda调用运算符是否为constexpr
仅取决于它是否"满足constexpr
函数的要求",而不是来自constexpr
说明符的存在。 - 如果默认情况下可以接受
constexpr
lambda,为什么不建议其他类型的函数-例如全局函数?如果编译器开始将所有满足要求的函数视为constexpr
,将会产生什么影响?
-
constexpr
限定符使lambda违反constexpr
函数的要求成为编译错误。当您显式需要 lambda为constexpr
时使用它,这样您就不会意外地使它不是constexpr
。 -
提问与回答
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 用"=default"声明的函数应该只在头文件中执行
- 将 std::thread by 值推送到列表中
- MATLAB to C++: csvread() not supported by MATLAB Coder
- 即使设置了"__set_what_UTF8",也始终显示"Default TException."
- .value( "key" , default) 不适用于空的 json 对象吗?
- MSVC 杂注警告省略 CPP 文件中的'default'
- 由于"error C4430: missing type specifier - int assumed. Note: C++ does not support default-int",我现在无法编
- Makefile by ocaml 和 cpp 扩展名
- 为什么使用默认构造函数"{}"而不是"= default"存在性能变化?
- 缺少类型说明符 - 假定为 int.注意 c++ 不支持 default-int
- 什么是 Direct3D 12.0 上的"Map Default Buffer"?
- C++ OpenCV Randu 函数抛出'Integer division by zero'
- 错误:C4430:缺少类型说明符-假定为int.注意:C++不支持default-int
- c++default-int中的语法错误
- 从函数 BY VALUE 返回数组,返回结构时会发生什么?
- C++;编译过程中的警告"enabled by default"是什么意思?
- "a struct has public inheritance by default"
- Constexpr lambda by default?