VS2015 compila ed esegue il seguente snippet senza problemi. g ++ e clang non collegano il codice e penso che siano corretti.La mia comprensione di [basic.link]/7 in N4140 è corretta?
#include <iostream>
namespace X {
void p() {
void q(); // This is a block scope declaration of the function q() with external
// linkage (by §3.5/6), which then must be defined in namespace X,
// according to §3.5/7, and not in the global namespace.
q();
}
}
void q() { std::cout << "q()" << '\n'; }
int main()
{
X::p();
}
Perché NDR? Non dovrebbe il linker segnalare un errore in questo caso? – Belloc
@Belloc L'implementazione dovrebbe ma non è richiesta. – Columbo
Da dove hai ricevuto questo rapporto di mancato recapito? – Belloc