使用此代码:
struct A
{
int i;
const int b;
};
// The union is to verify that A is a type that can be used in a union.
union U
{
A a;
int b;
};
int main()
{
U a = {1, 1};
U b = {2, 1};
}
Run Code Online (Sandbox Code Playgroud)
g ++版本4.8.3抱怨错误:
a.cpp:9:4: error: member ‘A U::a’ with copy assignment operator not allowed in union
A a;
^
a.cpp:9:4: note: unrestricted unions only available with -std=c++11 or -std=gnu++11
Run Code Online (Sandbox Code Playgroud)
但是clang 3.5.0编译这段代码没有错误.哪一个是正确的?这是编译器错误吗? …
我有这个代码
typedef struct
{
const char* fooString;
const bool fooBool;
}fooStruct;
Run Code Online (Sandbox Code Playgroud)
而这个初始化程序:
static const fooStruct foo[] =
{
{"file1", true},
{"file2", false},
....
};
Run Code Online (Sandbox Code Playgroud)
使用此代码,我在VS2008中有3个警告:
error C2220: warning treated as error - no 'object' file generated
warning C4510: '<unnamed-tag>' : default constructor could not be generated
warning C4512: '<unnamed-tag>' : assignment operator could not be generated
warning C4610: struct '<unnamed-tag>' can never be instantiated - user defined constructor required
Run Code Online (Sandbox Code Playgroud)