#include <iostream>
template<bool B, typename T>
std::string doSomething(T t);
template<>
std::string doSomething<true>(std::string s) {
return "true!";
}
template<>
std::string doSomething<false>(int i) {
return "false!";
}
int main() {
std::string foo {"foo"};
auto s1 = doSomething<true>(foo);
auto s2 = doSomething<false>(42);
std::cout << s1 << ", " << s2 << std::endl;
return 0;
}
Can you specify a function in the type signature that is called by the compiler that can determine the type of the parameter?
Something like :
doSomething can then be called like :