Например,
Код: Выделить всё
void f(int) {}
int main() {
constexpr int c = 1;
void f(int = c);
f();
}
ошибка: локальная переменная 'c' может не отображаться в этом контексте
MSVC ведет себя аналогично:
ошибка C2587: 'c': незаконное использование локальной переменной как параметр по умолчанию
Но Кланг прекрасно это воспринимает. Онлайн-демо: https://gcc.godbolt.org/z/9vWoK6TEz
Какая реализация здесь правильная?
Подробнее здесь: https://stackoverflow.com/questions/793 ... t-argument