Как я могу явно создать экземпляр функции-шаблона с аргументом, переданным по ссылке?
У меня есть простая шаблонная функция, которая принимает любой тип и превращает его в строку:
template <typename T>
string to_string (const T &e) {
std::stringstream ss;
string str;
ss << e;
ss >> str;
return str;
}
Обратите внимание, что параметр аргумента e
передается по ссылке.
Теперь я хочу явно создать экземпляр функции для разных типов данных, например:
template string to_string<string> (string);
template string to_string<double> (double);
Однако, компилятор жалуется (из-за явного создания экземпляра):
ошибка: явное создание экземпляра to_string не относится к шаблону функции, шаблону переменной, функции-члену, классу-члену или состоянию c элемент данных
шаблон строки to_string (string);
Если я изменю аргумент шаблонной функции с const T &e
на const T e
- то есть удаление ссылка - она компилируется и работает нормально.
Как можно явно создать экземпляр функции-шаблона с аргументом, переданным по ссылке?
Toolchain :
- C ++ 14
- clang версия 11.0.0 (MacOS)