A declaração de função em um escopo de função pode ter uma constante definida localmente como argumento padrão?
Por exemplo,
void f(int) {}
int main() {
constexpr int c = 1;
void f(int = c);
f();
}
O GCC não gosta disso, dizendo
erro: a variável local 'c' pode não aparecer neste contexto
O MSVC se comporta de forma semelhante:
erro C2587: 'c': uso ilegal de variável local como parâmetro padrão
Mas Clang aceita muito bem. Demonstração online: https://gcc.godbolt.org/z/9vWoK6TEz
Qual implementação está correta aqui?