¿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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta