jeudi 30 juillet 2015

repeated extern declarations of qualified identifiers C++

Why is it that qualified names cannot be re-declared inside functions?

The following code fails to compile (in MSVC2015 and clang)

int i;

namespace N
{
int j;
}

void foo()
{
    extern int i;
    extern int i;
    extern int N::j;
    extern int N::j;
}

int main()
{
    return 0;
}

However, if we move the two lines extern int N::j; to just before void foo() then the code compiles fine. Note that repeated declarations of unqualified names do work.

Aucun commentaire:

Enregistrer un commentaire