The declaration of a special member can require overload resolution to be
authorRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 29 Nov 2012 01:34:07 +0000 (01:34 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 29 Nov 2012 01:34:07 +0000 (01:34 +0000)
commit8bf22e5b5283da91aeff7685b01104db44de15e7
tree19218e6e821eb8d8dc426abe027246e8f5e9f18a
parentad6e5b262a4f2ca31cf0d397ac22f33ebca13c50
The declaration of a special member can require overload resolution to be
performed, to determine whether that special member is deleted or constexpr.
That overload resolution process can in turn trigger the instantiation of a
template, which can do anything, including triggering the declaration of that
very same special member function. When this happens, do not try to recursively
declare the special member -- that's impossible. Instead, only try to realise
the truth. There is no special member.

llvm-svn: 168847
clang/include/clang/Sema/Sema.h
clang/lib/Sema/SemaDeclCXX.cpp
clang/test/SemaCXX/implicit-member-functions.cpp