Я пытаюсь создать шаблон функции с реализацией по умолчанию и некоторые специализации следующим образом:Функция специализация шаблона
template <typename T>
inline T fromBool(bool var) { return var ? T(1) : T(0); }
template <>
inline Vec2 fromBool<Vec2>(bool var) { return var ? Vec2(1, 1) : Vec2(0, 0); }
// Some more specializations for Vec3, etc
Это пример определения сложного типа Vec2
:
struct Vec2 {
double x, y;
Vec2(double a, double b) { x = a; y = b; }
}
Однако , специализация не работает. Когда я вызываю fromBool<const Vec2>(var)
, компилятор использует реализацию по умолчанию (одну для простых типов).
Что я делаю неправильно?
работ насколько я могу сказать Http: //ideone.com/LIRxTQ – StoryTeller
@StoryTeller Обнаружена проблема: мне нужно определить это для типов 'const'. Существует ли обходное решение для переопределения всех специализаций для 'const'? – manatttta
Можете ли вы изменить свой вопрос, чтобы показать актуальную проблему? – StoryTeller