Сабж
#include <iostream>
template <typename T> struct A{
T x;
T f(double y) const { return x*y; }
// альтерантивная реализация, если T*double не определен
// T f(double y) const { return x; }
};
struct B{ int z; };
int main(){
A<double> a; std::cout<<a.f(1.)<<'\n';
A<B> b; std::cout<<b.f(1.)<<'\n';
}
как включать ту или иную реализацию A::f в зависимости от того есть или нету операции T*double ?