• Какой смысл внешней компоновки имени класса в C++?

    @dendibakh Автор вопроса
    Здравствуйте!
    Смысл тот, что имя класса (полное, со всеми неймспейсами) обозначает единственную сущность во всех единицах трансляции одной программы.

    Да, я тоже думал, что это так. Но пример ниже отлично работает:
    A.cpp
    ----------
    struct A
    {
       void foo() {}
    };
    
    void fooA()
    {
       A a;
       a.foo();
    }
    
    B.cpp
    ----------
    struct A
    {
       void foo() {}
    };
    
    void fooB()
    {
       A a;
       a.foo();
    }


    И получается что имя класса не такая уж и уникальная сущность в пределах всей программы.
    И действительно пример с неполным типом тут не причем, чего это я его запостил... ?

    Почему же? Работает.

    Это Вы имеете ввиду классический пример, когда мы включаем в cpp файлы только объявление класса?
    Ответ написан