static float3 value = (float3){ 1.f, 5.f, 10.f };
Это составной литерал , который разрешен в C, но не в C ++. C позволяет вам создать безымянный объект типа float3
и инициализировать его списком инициализаторов. Некоторые компиляторы, такие как G CC, поддерживают его как расширение, но MSV C не поддерживает.
Чтобы делать то, что вы хотите, вы можете сделать:
static float3 value = { 1.f, 5.f, 10.f };
This is агрегатная инициализация : каждый нестатический c член класса в структуре float3
инициализируется копией из соответствующего предложения списка инициализаторов. Ваша структура является агрегатом, потому что она не имеет ни объявленных пользователем конструкторов, ни закрытых или защищенных нестатических c членов данных, ни базовых классов, ни виртуальных функций.