在 C++03 中作为参数传递的结构的匿名 (?) 初始化

Nio*_*ium 4 c++ struct anonymous initialization

说,我有

struct Foo
{
    char a;
    char b;
};

void bar(Foo foo);
Run Code Online (Sandbox Code Playgroud)

初始化结构并将其传递给函数的最简洁方法是什么?理想情况下,我想写一些类似的东西

bar(Foo = {'a','b'});
Run Code Online (Sandbox Code Playgroud)

如果 Foo 是一个工会呢?

UPD:我真诚地道歉,这个问题应该只与 C++03 相关。此外,在这种特殊情况下,应避免远离 POD(该代码适用于嵌入式系统,因此需要更短的字节码)。vonbrand,感谢 C++11 的回答。

von*_*and 5

在 C++ 11 中,您可以编写:

bar({'a', 'b'});
Run Code Online (Sandbox Code Playgroud)

或者:

bar(Foo{'a', 'b'});
Run Code Online (Sandbox Code Playgroud)

(请参阅 Stroustup 的C++11 常见问题解答)。

g++-4.8.2 接受这个没有抱怨只有当你给它时-std=c++11,clang++-3.3 给出一个错误,除非-std=c++11