Имеем следующий пример неработающего кода:
struct foo1 { typedef int val; };
struct foo2 { };
template <class foo> struct bar
{
typename foo::val f() {return 10; }
// other...
};
int main()
{
bar<foo1> f1;
bar<foo2> f2; // error: no type named `val' in `struct foo2'
int i = f1.f();
//f2::f newer used...
}
Есть идеи, как можно поизвращаться с
enable_if и ему подобными, чтобы заставить это дело компиляться, игнорируя отсутствие
foo::val для
bar<foo2>?