Как указывает cppreference:
std :: enable_if может использоваться в качестве дополнительного аргумента функции (неприменимо к перегрузкам операторов), в качестве возвращаемого типа (неприменимо к конструкторам и деструкторам) или в качестве шаблона класса или параметра шаблона функции.
Это потому, что не имеет никакого значения, где именно enable_if используется в классе шаблона или функции шаблона - единственное, что имеет значение, это тот факт, что он используется в классе шаблона или функции шаблона (и удалит создание экземпляра из набора разрешений перегрузки)?
Может ли это быть использовано также, например,
template<typename T>
class X {
public:
void someFunc() {
enable_if<is_integral<T>::value, int>::type dummy;
}
};
для достижения того же эффекта, который используется при указании cppreference?