// RUN: %clang_cc1 -fsyntax-only -verify -Wno-unused %s // Tests that overload resolution is treated as an unevaluated context. // PR5541 struct Foo { Foo *next; }; template struct Bar { }; template class Wibble { typedef Bar B; static inline B *concrete(Foo *node) { int a[sizeof(T) ? -1 : -1]; return reinterpret_cast(node); } public: class It { Foo *i; public: inline operator B *() const { return concrete(i); } inline bool operator!=(const It &o) const { return i != o.i; } }; }; void f() { Wibble::It a, b; a != b; }