]> granicus.if.org Git - clang/commit
I hate this commit.
authorDouglas Gregor <dgregor@apple.com>
Tue, 18 May 2010 05:45:02 +0000 (05:45 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 18 May 2010 05:45:02 +0000 (05:45 +0000)
commit238058c372cfb7bdaf489f51171eb1380ebfd6a6
treef39d05ef4f083475ea744fd147be20898953143c
parentc6772ce9c80ff524c7c522b5f0b37de58786bd84
I hate this commit.

Revert much of the implementation of C++98/03 [temp.friend]p5 in
r103943 and its follow-ons r103948 and r103952. While our
implementation was technically correct, other compilers don't seem to
implement this paragraph (which forces the instantiation of friend
functions defined in a class template when a class template
specialization is instantiated), and doing so broke a bunch of Boost
libraries.

Since this behavior has changed in C++0x (which instantiates the
friend function definitions when they are used), we're going to skip
the nowhere-implemented C++98/03 semantics and go straight to the
C++0x semantics.

This commit is a band-aid to get Boost up and running again. It
doesn't really fix PR6952 (which this commit un-fixes), but it does
deal with the way Boost.Units abuses this particular paragraph.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104014 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaTemplateInstantiateDecl.cpp
test/CXX/class.access/class.friend/p1.cpp
test/CXX/temp/temp.decls/temp.friend/p4.cpp