On Thu, Sep 3, 2009 at 10:53 PM, Douglas Gregor<[email protected]> wrote: > Author: dgregor > Date: Fri Sep 4 00:53:02 2009 > New Revision: 80988 > > URL: http://llvm.org/viewvc/llvm-project?rev=80988&view=rev > Log: > Introduce an egregious hack to fix PR4828. > > The problem this change addresses is that we treat __is_pod and > __is_empty as keywords in C++, because they are built-in type traits > in GCC >= 4.3. However, GNU libstdc++ 4.2 (and possibly earlier > versions) define implementation-detail struct templates named __is_pod > and __is_empty. > > This commit solves the problem by recognizing > > struct __is_pod > > and > > struct __is_empty > > as special token sequences. When one of these token sequences is > encountered, the keyword (__is_pod or __is_empty) is implicitly > downgraded to an identifier so that parsing can continue. This is an > egregious hack, but it has the virtue of "just working" whether > someone is using libstdc++ 4.2 or not, without the need for special > flags.
Wow, that's evilly clever. -Eli _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
