LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

Не. Это один класс.

Мы пишем сначала самую общую версию.

template <class AtomicType, template <class> class Unit>
class GenScatterHierarchy : public Unit<AtomicType>
{
typedef Unit<AtomicType> LeftBase;
};

Потом пишем, что-то более специфичное(Когда первый параметр не любой, а Nulltype)

// Do nothing for NullType
template <template <class> class Unit>
class GenScatterHierarchy<NullType, Unit>
{
};

А компилятор сначала проверяет более специфичные вещи, потом идёт к общему.

Почитай https://en.cppreference.com/w/cpp/language/partial_specialization

Просто не читай то что выделено зеленым и подписано since C++14.

Там просто сразу для всех версий пишут.

Примеры оттуда может помогут лучше понять…

Исходная версия fsb4000, :

Не. Это один класс.

Мы пишем сначала самую общую версию.

'''C++ template <class AtomicType, template class Unit> class GenScatterHierarchy : public Unit { typedef Unit LeftBase; }; '''

Потом пишем, что-то более специфичное(Когда первый параметр не любой, а Nulltype)

// Do nothing for NullType
template <template <class> class Unit>
class GenScatterHierarchy<NullType, Unit>
{
};

А компилятор сначала проверяет более специфичные вещи, потом идёт к общему.

Почитай https://en.cppreference.com/w/cpp/language/partial_specialization

Просто не читай то что выделено зеленым и подписано since C++14.

Там просто сразу для всех версий пишут.

Примеры оттуда может помогут лучше понять…