http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53236
--- Comment #9 from Daniel Krügler <daniel.kruegler at googlemail dot com> 2012-05-07 13:50:10 UTC --- (In reply to comment #8) [..] > Here the corrected code with proper comments. [..] > auto yyy = d.get<int>(); // #ifndef WITH_USING_DECLARATION -> > Compile-time error -> GCC is behaving Correctly!!! Base<int>::get<int>() is > hidden! > // #ifdef WITH_USING_DECLARATION -> No > Compile-time error -> GCC is behaving incorrectly. Base<int>::get<int>() must > be hidden. Its a mystery to me why get() should return an T2 when the return type is T, but anyway: I cannot confirm your results for gcc 4.8.0 20120429 (experimental). Here the second case is correctly rejected.