[OpenIndiana-discuss] weird C++ problem
Apostolos Syropoulos
asyropoulos at yahoo.com
Mon Apr 1 18:29:41 UTC 2013
Hello everybody,
I was trying to compile a program and one file failed to compile
with g++ 4.7.2 but it compiles with CC: Sun C++ 5.12 SunOS_i386 2011/11/16.
The following little program reproduces the error I got initially:
#include <iostream>
#include <string>
using namespace std;
namespace KPS {
extern "C" {
#include <string.h> //it includes another header that eventually
} // included this header.
}
using namespace KPS;
int main() {
std::string x;
string y = "abcdef";
cout << y << endl;
}
The error I am getting follows:
yy.cpp: In function ‘int main()’:
yy.cpp:12:3: error: reference to ‘std’ is ambiguous
<built-in>:0:0: error: candidates are: namespace std { }
In file included from /usr/include/string.h:33:0,
from yy.cpp:6:
/usr/include/iso/string_iso.h:55:15: σφάλμα: namespace KPS::std { }
yy.cpp:12:3: σφάλμα: reference to ‘std’ is ambiguous
<built-in>:0:0: σφάλμα: candidates are: namespace std { }
In file included from /usr/include/string.h:33:0,
from yy.cpp:6:
/usr/include/iso/string_iso.h:55:15: σφάλμα: namespace KPS::std { }
yy.cpp:12:15: σφάλμα: expected ‘;’ before ‘x’
According to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773
gcc 4.7.2 defines __cplusplus to be equal to 199711L. And of
course CC assumes that the value of __cplusplus is
199711L. The line in iso/string_iso.h that makes
g++ to complain is line 55 of this file:
line 54: #if __cplusplus >= 199711L
line 55: namespace std {
line 56: #endif
Has anyone seen this thing before?
A.S.
----------------------
Apostolos Syropoulos
Xanthi, Greece
More information about the OpenIndiana-discuss
mailing list