mercredi 22 mai 2019

Diffetence between enable_if usages

As cppreference indicates:

std::enable_if can be used as an additional function argument (not applicable to operator overloads), as a return type (not applicable to constructors and destructors), or as a class template or function template parameter.

Is that because it doesn't make any difference where exactly enable_if is used in a template class or template function - the only thing that matters is the fact that it IS used in a template class or template function (and will remove an instantiation from an overload resolution set)?

Could it be also used this way for example

template<typename T>
class X {
public:
    void someFunc() {
        enable_if<is_integral<T>::value, int>::type dummy;
    }
};

to achieve the same effect as when being used as cppreference indicates?

Aucun commentaire:

Enregistrer un commentaire