我正在尝试编译一些代码,在我的一个头文件中,我在全局命名空间中有以下函数:
template <class T>
inline
T
to_type<T> (const std::string& string)
{
std::stringstream ss(string);
T value;
ss >> value;
return value;
}
Run Code Online (Sandbox Code Playgroud)
但不知何故,这会引发g ++错误expected initializer before '<' token
(我更改了其中一个引号以解决与SO格式的冲突)
我不明白这个错误.为什么to_type
不是有效的初始值设定项?这是第一次使用此符号.如何修复此代码段?
正确的语法是
template <class T>
inline
T
to_type(const std::string& string)
{
std::stringstream ss(string);
T value;
ss >> value;
return value;
}
Run Code Online (Sandbox Code Playgroud)
(注意<T>
后面没有to_type
)。
<>
仅在声明专门化时放在声明的函数(或类)的名称之后,而不是在声明基本模板时。