скрыть шаблон функции, объявить специализации
Это продолжение кШаблоны C ++: предотвращение создания базового шаблона
Я использую шаблоны для достижения перегрузки функций без путаницы неявных преобразований типов:объявлять шаблон функции, определить желаемые специализации (перегрузки). все хорошо, кроме неправильного кода не выдает ошибок до фазы соединения:
lib.hpp:
template T f(T v);
lib.cpp:
#include "lib.hpp"
template long f(long v) { return -v; }
template bool f(bool v) { return !v; }
main.cpp:
#include
#include "lib.hpp"
int main()
{
std::cout
< f(123L) < ", "
< f(true) < ", "
< f(234) < "\n"
;
}