Ove*_*ain 4 c++ templates template-specialization
我是模板的新手.我尝试为函数模板定义专用模板,但我的编译器返回错误.它是简单的最大功能,只写练习模板; 这是代码:
template <typename TYP1, typename TYP2> TYP1 maximum(TYP1& param1, TYP2& param2)
{
return (param1 > param2 ? param1 : param2);
}
Run Code Online (Sandbox Code Playgroud)
和专业功能:
template<> std::string maximum<std::string, std::string>(std::string prm1, std::string prm2)
{
std::cout << "Inside specialized functiion\n";
return (prm1.length() > prm2.length() ? prm1 : prm2);
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试为std :: string或任何其他类型编写特化,包括我自己定义的类,则无关紧要 - 错误总是相同的:
"错误C2912:显式特化;'std :: string maximum(std :: string,std :: string)'不是函数模板的特化......"
IntelliSense建议:"没有功能模板的实例"
我应该改变什么来使这个编译和正常工作?
提前致谢
whe*_*ies 10
你忘了&在琴弦前面.它期望引用类型,您的"专业化"使用值类型.
template<> std::string maximum<std::string, std::string>(std::string &prm1, std::string &prm2)
Run Code Online (Sandbox Code Playgroud)