SFINAE for class methods
От: koenjihyakkei Россия  
Дата: 10.01.19 13:38
Оценка:
Есть такой код:

template<class FooType>
class Foo
{

};

class Sr
{
    template<class T>
    typename std::enable_if<std::is_array<T>::value, bool>::type
        Func(T& val)
    {
        
    }

    template<class T>
    typename std::enable_if<!std::is_integral<T>::value && !std::is_array<T>::value, bool>::type
        Func(T& val)
    {
        
    }
};


Как можно специфицировать функцию Func конкретно для класса Foo?
Пробовал так:

template<class T>
typename std::enable_if<std::is_same<Foo, T>::value, bool>::type
    Func( T& val)
{
    
}

Но компилятор требует указания FooType у Foo. Хотя мне это не важно, главное специфицировать функцию для всех Foo независимо какой у них FooType.
Такое вообще возможно?

Спасибо заранее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.