C++ Visual Studio 2013-std::在出现警告时启用_4544
我已经写了这个代码 在类中的标题C++ Visual Studio 2013-std::在出现警告时启用_4544,c++,visual-studio,c++11,C++,Visual Studio,C++11,我已经写了这个代码 在类中的标题 template <typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value, T>::type> T GetResultValueAsNumber(char * result); 模板 T GetResultValueAsNumber(字符*结果); 而不是内联文件 template < typename
template <typename T,
typename = typename std::enable_if<std::is_arithmetic<T>::value, T>::type>
T GetResultValueAsNumber(char * result);
模板
T GetResultValueAsNumber(字符*结果);
而不是内联文件
template <
typename T,
typename = typename std::enable_if<std::is_arithmetic<T>::value, T>::type
>
T PostgreSQLWrapper::GetResultValueAsNumber(char * result)
{
double value = strtod(result, NULL);
return static_cast<T>(value);
};
模板<
类型名T,
typename=typename std::enable_if::type
>
T PostgreSQLWrapper::GetResultValueAsNumber(char*result)
{
双精度值=strtod(结果,NULL);
返回静态_cast(值);
};
在Visual Studio 2013中,我收到了此警告(但代码工作正常)
警告C4544:'':此模板声明上的默认模板参数被忽略-请参阅“”的声明
这是什么意思?默认值只能给出一次,因此,如果它在标题中,则不能用函数的定义来重述它。只需删除(或注释掉)默认值。VC++在这里不符合要求;这个程序格式不好。GCC和叮当声 §14.1/10: 获得可供使用的默认模板参数集 通过合并 模板默认函数参数与(8.3.6)相同 §8.3.6/4: 默认参数不能由以后的声明重新定义(不是 即使是相同的值) /6还显示了一个示例: 除了类模板的成员函数外,默认参数 在类外部出现的成员函数定义中 将定义添加到 类定义中的成员函数声明;[…][示例: -[结束示例]
请你把样品寄出去好吗。我完全不明白你的意思。
warning C4544: '<unnamed-symbol>' : default template argument ignored on this template declaration - see declaration of '<unnamed-symbol>'
class C {
void f(int i = 3);
};
void C::f(int i = 3) { // error: default argument already
} // specified in class scope
// […]