【发布时间】:2015-07-11 19:24:23
【问题描述】:
给定 C++-03 中的模板化 C++ 函数:
template <typename data>
void example(data arg) {
// How to get POD zero initialized and non-POD, default constructor?
data x();
...
}
如果模板化参数是 POD(例如,int 获得 0,float 获得 0.0 等),我如何将其归零,或者对于非 POD,使用其默认构造函数?
我看到班级成员,这是作为explained here 处理的:
struct X
{
int x;
};
X x; //x.x is not initialized
X y = X(); //y.x is 0
但是这种情况下,变量不是类的成员,那么如何对应得到这个初始化POD类型变量和默认构造非POD类型变量的效果呢?
【问题讨论】:
-
您是在尝试清除
arg(如arg = 0;中的某些特定类型),还是尝试声明与arg相同类型的变量,并对其进行值初始化?如果是前者,x在那里做什么?如果是后者,arg在那里做什么? -
@PiotrS。请将答案发布为答案,而不是 cmets。不过,它可能会不必要地调用复制构造函数。根据 OP 的具体目标,还有其他一些选项。
-
@hvd 然后让我们等待OP的澄清
-
@Piotr S 你在这里有正确的答案。帖子作为答案:)