GCC vs. вложенные шаблоны · Заметки

Представляете, GCC не умеет компилировать вот такую элементарщину:

template<class A, int B> class ClassOne:
        public ClassTwo<A, B, ClassThree<A, B>>
{
        ...
};

Видимо, он пытается развернуть ClassThree<A, B>, ещё не зная значения этих A и B. Вот если ClassThree можно задать для конкретных A и B, то его ещё можно уговорить, соорудив что-то типа typedef ClassThreeF2 ClassThree<float, 2> и потом подсунуть этот ClassThreeF2 в объявление ClassOne.
А вот MSC'2005 жуёт такой код за милую душу.
Придётся ради совместимости с GCC переписывать кучу кода на динамическую линковку и виртуальные функции.



4 comments

Archives

                                                                                                                                                                                                                                                                   


© Sergey A. Galin, 1998-2021 sageshome.net/blog/