Я хотел бы использовать значение constexpr в lambda. Чтение ответа на Используя lambda capture constexpr значение как размер массива, я предположил, что следующее должно работать:
#include<array>
int main()
{
constexpr int i = 0;
auto f = []{
std::array<int, i> a;
};
return 0;
}
Однако, Clang 3.8 (с std = С++ 14) жалуется, что
переменная 'i' не может быть неявно зафиксирована в лямбда без установленный по умолчанию
Если это считать ошибкой в clang 3.8?
BTW:
Вышеприведенный код компилируется с помощью gcc 4.9.2. Если я изменил выражение лямбды, чтобы зафиксировать явно:
...
auto f = [i]{
...
clang 3.8 компилирует его, но gcc 4.9.2 сбой:
ошибка: значение 'i не может использоваться в постоянном выражении...