Я искал четкий ответ, и я просто ловил кусочки из Интернета.Явная функция шаблона и метод Специализация
У меня есть функция, и она должна действовать по-разному на основе переменной типа. Функция не принимает аргументов, поэтому перегрузка не работает, что приводит к специализации шаблонов. Например:
//Calls to this function would work like this:
int a = f();
int b = f<int>();
int c = f<char>();
//...
Во-первых, это возможно даже синтаксически? Я чувствую, что это так. Продолжение.
У меня возникли проблемы с определением этой функции, потому что я получил зависание в синтаксисе для явной специализации. Я пробовал несколько разных подходов, но мне еще предстоит получить простой пример для работы.
Во-вторых, я пытаюсь (в конечном итоге) сделать эту функцию шаблона в методе шаблона (не шаблонного) класса. Я перейду через этот мост, когда я приду к нему.
Спасибо,
Ian
Спасибо. Я угадал - попробовал это, но мой линкер продолжал говорить, что есть многозначные символы? – imallett
Вы написали их в заголовке и включены в несколько единиц перевода? Явная специализация функции шаблона подобна регулярной функции в этом смысле. Вам придется либо определить их 'inline', либо в неназванном пространстве имен (эквивалент C++' static'). В противном случае просто объявите их в заголовке и определите их в файле cpp. –
Да в заголовке; но с включением охранников. Мне удалось заставить его работать с неназванным пространством имен xor inlining. Однако, когда я перехожу на вторую проблему (превращая ее в метод), она снова не работает (пытается вставить). Что касается размещения в файле .cpp, у iirc не было проблем с разделением шаблонов из реализации на C++? – imallett