POD的就地初始化

In place initialization of POD

本文关键字:初始化 POD      更新时间:2023-10-16

我不认为"in place"是一个合适的词,但我没有一个更好的词。

我有一个POD,比方说:

struct My {
    int a;
};
//and suppose a operator<< to stream is also defined

我可以这样用:

My my = {3};
std::cout << my << std::endl;

我想知道我是否可以在下面做同样的事情,但不使用辅助函数:

template <typename ANY>
My helper(ANY value) {
    My r = {value};
    return r;
}
std::cout << helper(3) << std::endl;

我正在寻找构造函数所做的相同的事情,但由于我有一个POD,我不能创建一个构造函数。

你可以这样做:

struct My {
    int a;
    int b;
    int c;
    float d;
};
void somefunc() {
   cout << (My){1, 2, 3, 4.5} << endl;
}