#include <iostream>
constexpr int new_sz()
{
return 42;
}
constexpr size_t scale(size_t count)
{
return new_sz() * count;
}
int main()
{
int value = 12;
int arr[scale(value)]; // ?????????????
return 0;
}
функция scale вернет константное выражение если ее аргумент также является константным выражением. В данном случае value не является константой и функция scale не возвращает константное выражение по сути. MSVC ругается на то что размер массива не может быть неконстантным выражением.
Но почему Clang или GCC все нормально компилируют и не обращают на это внимание?