История изменений
Исправление 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.
Там просто сразу для всех версий пишут.
Примеры оттуда может помогут лучше понять…