Рассмотрим следующий код, предоставленный коллегой:
#include <array>
#include <string>
int main() {
const int size = 4;
return [size]() {
std::array<std::string, size> a; // *
return a.size();
}();
}
Он принимается Clang 5.0.0, но отклоняется GCC 7.2 с сообщением об ошибке для выделенной строки:
error: '__closure' is not a constant expression
Какой компилятор прав?