¿Por qué esta "variable externa indefinida" no produce un error de enlace en C ++ 17?
He compilado y ejecutado el siguiente programa en un compilador C ++ 17 (Coliru). En el programa, yodeclarado unextern
variable, perono definió eso. Sin embargo, el compilador no da unerror de enlazador.
#include <iostream>
extern int i; // Only declaration
int func()
{
if constexpr (true)
return 0;
else if (i)
return i;
else
return -1;
}
int main()
{
int ret = func();
std::cout<<"Ret : "<<ret<<std::endl;
}
¿Por qué el compilador no da un error de enlazador?