У меня есть класс с шаблоном. Внутри этого класса есть переменная T * Variable; и переменная строка str; и есть функция с частью кода:
if(std::is_same<T, string>::value){
*Variable = str;
return 0;
}
Естественно, несмотря на то, что вышеупомянутое присваивание не будет работать с различными переменными из-за условий раньше, компилятор стонет во время компиляции. Я думал о написании условной шаблонной функции с двумя аргументами шаблона, чтобы поставить ее вместо вышеуказанного присвоения:
Assign(Variable, &str);
А перед классом:
template <typename T, typename U>
conditional <T, U> void Assign(T* to, U* from){
;
}
conditional <string, string> void Assign(T* to, U* from){
*to = *from;
}
Таким образом, компилятор выбрал бы специализированный один для моей нужной строки. Как это сформулировать? Можно ли это сформулировать только для переменных типов или мне нужен третий аргумент? Или может быть какое-то условие шаблона только для основного кода внутри функции?