http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57825
--- Comment #2 from Tomasz KamiĆski <tomaszkam at gmail dot com> --- Propably this is also causing the problem with the standard library is_function and is_member function traits, because they cannot be implemented correclty. Example: struct A { void f_n() {} void f_l() &{} void f_r() &&{} }; The following assertions fails incorrectly. static_assert(std::is_function<void()&>::value, "function"); static_assert(std::is_member_pointer<void (A::*)()&>::value, "member function"); static_assert(std::is_function<void()&&>::value, "function"); static_assert(std::is_member_pointer<void (A::*)()&&>::value, "member function");