我想在lambda中使用constexpr值.阅读使用lambda捕获的constexpr值作为数组维度的答案 ,我假设以下应该工作:
#include<array>
int main()
{
constexpr int i = 0;
auto f = []{
std::array<int, i> a;
};
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然而,Clang 3.8(std = c ++ 14)抱怨说
变量'i'不能在没有指定capture-default的lambda中隐式捕获
这应该被视为clang 3.8中的错误吗?
BTW:
上面的代码用gcc 4.9.2编译.如果我将lambda表达式更改为显式捕获:
...
auto f = [i]{
...
Run Code Online (Sandbox Code Playgroud)
clang 3.8编译它,但gcc 4.9.2失败:
错误:'i'的值在常量表达式中不可用...