为什么在尝试为显式模板专用化设置不同的返回值而不是auto时会出现编译错误?为什么会出现编译错误:
template <size_t T>
auto Get() = delete;
template <>
auto Get<0>(){
return 5;
}
std::string str = "Hello world!";
template <>
std::string const & Get<1>() {
return str;
}
int main() {
func_employee();
return 0;
}
1条答案
按热度按时间aiqt4smr1#
在你的例子中,
auto Get()
是函数签名,它与模板参数无关。如果你想显式地指定返回类型,你必须为它添加一个相应的参数:在这种情况下,模板专用化可以保持不变,但
auto
返回类型不再有意义,因为我不知道如何使用它来示例化模板,所以您可能希望将其替换为所需的整型:最后,函数模板不会根据返回类型推导出它的参数,所以在这种情况下,你必须显式地指定它: