У меня проблемы с пониманием следующей строки в коде C ++:
template<class Variable> struct strVar< :: namespaceName::strVar2_<Variable>> : public trueType {};
Что означают угловые скобки после struct strVar? Я никогда не слышал об этом стиле раньше.
Строка не компилируется с моим компилятором, но она исходит от работающего программного обеспечения, поэтому в некотором смысле она должна быть правильной.
Код определяет частичную специализацию шаблона класса strVar
, Где-то ранее в коде должно быть хотя бы объявление основного шаблона:
template <class T> struct strVar;
Затем код, который вы разместили, дает определение, которое будет использоваться для strVar
всякий раз, когда его аргумент шаблона (соответствует T
) бывает специализация шаблона класса ::namespaceName::strVar2_
,
Пример:
strVar<int> x; // will use primary template
strVar<::namespaceName::strVar2_<int>> x; // will use the specialisation
Других решений пока нет …