我试图延迟实例化一个enabled_if类成员函数(需要它来绕过循环依赖),但我得到了" 警告C4544:' itemType_inner&#39 ;:此模板声明忽略默认模板参数"在Visual Studio 2017中(/ std:c ++最新)。 现在我已经在Compiler Warning (level 1) C4544阅读了它所说的内容,但我对此并不了解,这个例子对我也没有帮助。
现在如果我有一个普通的类,我迟到将模板实例化为:
template <typename itemType> class A
{
public: bool Function_1( int variable ) const;
};
template <typename itemType> bool A<itemType>::Function_1( int variable ) const
{
return false;
}
但是如果我尝试使用与enable_if函数相同的技术,我会收到警告:
template <typename itemType> class A
{
public:
template<class itemType_inner = itemType>
typename std::enable_if<std::is_arithmetic<itemType_inner>::value, bool >::type Function_2( int variable ) const;
};
template <typename itemType>
template<class itemType_inner = itemType>
typename std::enable_if<std::is_arithmetic<itemType_inner>::value, bool >::type A<itemType>::Function_2( int variable ) const
{
return false;
}
现在任何有关C4544在我的案例中真正含义以及如何删除它的说明都将非常感激。
溴 瓦尔德马