Подтвердить что ты не робот

Как переслать объявление класса шаблонов С++?

Для класса шаблона, подобного следующему:

template<typename Type, typename IDType=typename Type::IDType>
class Mappings
{
public:
    ...
    Type valueFor(const IDType& id) { // return value }
    ...
};

Как кто-то может объявить этот класс в файле заголовка?

4b9b3361

Ответ 1

Вот как вы это сделаете:

template<typename Type, typename IDType=typename Type::IDType>
class Mappings;

template<typename Type, typename IDType>
class Mappings
{
public:
    ...
    Type valueFor(const IDType& id) { // return value }
    ...
};

Обратите внимание, что значение по умолчанию указано в объявлении вперед, а не в фактическом определении.

Ответ 2

Вы можете объявлять аргументы по умолчанию для шаблона только для первого объявления шаблона. Если вы хотите разрешить пользователям пересылать объявление шаблона класса, вы должны предоставить заголовок пересылки. Если вы хотите переслать объявление другого шаблона класса с использованием значений по умолчанию, вам не повезло!