// PR c++/56039 // { dg-do compile { target c++11 } } template struct BoolSink { typedef void type; }; template struct AddRvalueReferenceImpl { typedef T type; }; template struct AddRvalueReferenceImpl::type> { // { dg-error "lambda" } typedef T &&type; }; template struct AddRvalueReference : AddRvalueReferenceImpl { }; namespace ImplHelpers { template typename AddRvalueReference::type create(void) { } } template struct IsConstructibleImpl { enum { value = 0 }; }; template struct IsConstructibleImpl() ...); }>::type, Args ...> { // { dg-error "lambda" } enum { value = 1 }; }; template struct IsConstructible : IsConstructibleImpl { }; struct DestroyMe { ~DestroyMe() = delete; }; static_assert(+IsConstructible::value, "error"); static_assert(!IsConstructible::value, "error"); static_assert(+IsConstructible::value, "error"); static_assert(!IsConstructible::value, "error"); static_assert(!IsConstructible::value, "error"); static_assert(+IsConstructible::value, "error"); static_assert(!IsConstructible::value, "error"); static_assert(+IsConstructible::value, "error"); // { dg-prune-output "expected" } // { dg-prune-output "does not name a class" } // { dg-prune-output "static assertion" }