Использование VS2013 Update 2, я наткнулся на какой-то странное сообщение об ошибке:Возможная ошибка компилятора в MSVC12 (VS2013) с назначенным инициализаторе
// test.c
int main(void)
{
struct foo {
int i;
float f;
};
struct bar {
unsigned u;
struct foo foo;
double d;
};
struct foo some_foo = {
.i = 1,
.f = 2.0
};
struct bar some_bar = {
.u = 3,
// error C2440 : 'initializing' : cannot convert from 'foo' to 'int'
.foo = some_foo,
.d = 4.0
};
// Works fine
some_bar.foo = some_foo;
return 0;
}
Оба GCC и Clang принять его.
Я что-то упустил или этот фрагмент кода обнаруживает ошибку компилятора?
EDIT: Дубликат: Initializing struct within another struct using designated initializer causes compile error in Visual Studio 2013
Является ли этот пример минимален (т.е. делает проблему уйти, если вы удалите некоторых членов этих '' '' '' '' '' '' '' '' '' '' '' '' '' '' '') –
Если вы не видите его в ссылке: * Исправление этой проблемы было проверено в источниках компилятора. Исправление должно появиться в будущей версии Visual C++. * Возможно, это работает с новым CTP? – chris
@PatrickCollins Это упрощенный пример, ошибка, впервые показанная с 'D2D1_SIZE_U' и' D2D1_HWND_RENDER_TARGET_PROPERTIES' от –
diapir