I try to compile the following with g++ 4.7.2:
template <typename T> struct A { struct B { T t; template<T B::*M> T get() { return this->*M; } }; B b; T get() { return b.get<&B::t>(); } }; int main() { A<int> a; a.get(); }
It gives me
test.cpp: In member function ‘T A<T>::get()’: test.cpp:15:23: error: expected primary-expression before ‘)’ token test.cpp: In instantiation of ‘T A<T>::get() [with T = int]’: test.cpp:22:8: required from here test.cpp:15:23: error: invalid operands of types ‘<unresolved overloaded function type>’ and ‘int A<int>::B::*’ to binary ‘operator<’
Why?
Thanks.