http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59712
--- Comment #2 from Olivier Parcollet <oparcollet.triqs at gmail dot com> --- I am not sure. If I understood correctly, clang is stricter on this sort of issue than gcc, but I do not know what the standard says. A minimal version of such code is (from hashtable.h) : #include <utility> template<typename T> class A { int f(int i) const noexcept { return i + 1; } static_assert(noexcept(std::declval<const A&>().f(0)),"bla bla"); }; int main() { A<int> a; } again gcc compiles it, not clang (same error as before). Which one is right ? (even though I don't really see the point of this static_assert in the first place...).