Если вы хотите, чтобы ваша структура оставалась POD , используйте функцию, которая ее создает:
Foo make_foo(int a, int b, int c) {
Foo f = { a, b, c };
return f;
}
Foo test() {
return make_foo(1, 2, 3);
}
С C ++ 0x равномерная инициализация удаляетнужно для этой функции:
Foo test() {
return Foo{1, 2, 3};
// or just:
return {1, 2, 3};
}