C ++模板:enable_if成员函数警告的后期实例化

时间:2017-12-28 15:34:05

标签: c++ templates enable-if

我试图延迟实例化一个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在我的案例中真正含义以及如何删除它的说明都将非常感激。

溴 瓦尔德马

0 个答案:

没有答案