【发布时间】:2018-06-06 00:25:38
【问题描述】:
考虑以下代码:
template<typename T>
T foo() {
if (std::is_same<T, int>::value)
return 5;
if (std::is_same<T, std::string>::value)
return std::string("bar");
throw std::exception();
}
使用foo<int>() 调用时,会抛出错误cannot convert ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ to ‘int’ in return。
我知道解决方案是使用模板专业化,但我想问是否有可能通过std::is_same 检查类型来保持当前机制?
【问题讨论】: