$ cat abi.cc
#include <iostream>
struct abi;
void foo (abi &);
$ gcc abi.cc
abi.cc:3: error: variable or field ‘foo’ declared void
abi.cc:3: error: expected primary-expression before ‘&’ token
abi.cc:3: error: expected primary-expression before ‘)’ token
The problem is that <bits/atomic_word.h> on ia64 includes <cxxabi.h> which
defines namespace abi.
Before 4.2, ia64 has used the generic <bits/atomic_word.h>.
--
Summary: [4.2/4.3 regression] Namespace pollution in c++ headers
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: schwab at suse dot de
GCC target triplet: ia64-*-*
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30586