POD和模板

这是一个POD吗?

template  struct Data { float val_f; T val_t; int val_i; }; 

如果我有一个C函数需​​要类似的东西:

 struct Data { float val_f; double val_t; int val_i; }; 

我可以传递一个Data对象吗?

PS。 我猜答案是肯定的,因为在编译时, Data将被转换为上面的结构并且将是POD结构。 我需要公正和(知情)确认。

在回答第一个问题时,它取决于模板参数T 如果T是POD,则Data将是POD。

在回答第二个问题时,具有相同定义的类不是相同的类型,因此您不能互换使用它们。 第一个示例中的Data与第二个定义中的Data不是同一类型。 (无论如何,要将它们放在同一个程序中,您必须为它们指定不同的名称。您不能拥有与类同名的模板。)

这取决于你作为T传递的类型。 如果您使用POD类型进行实例化,那么是。

如果您有权访问c++0x或Boost,您应该可以通过特征std::is_pod进行检查。

希望这可以帮助。