这本身不是问题,而更像是一个测试,以了解C ++中的功能是否可能。
是否可以创建以下功能:
我尝试了多种解决方案,但在某些情况下或其他情况下都失败了。
最后,我希望该解决方案的框架类似于以下代码:
class Person {};
// Niladic: 0 Arguments
void array()
// Monoadic: 1 Arguments
void array(Person& element) {}
template <typename type> void array(type element) {}
// Variadic: Multiple Arguments --- How do we go about it?
void array(...) {}
int main(int argc, char* argv[]) {
// WORKS!
array();
array(Person());
array(1);
// ... --- How to go about this?
array(1, Person(), Person());
array(Person(), 2, Person());
array(Person(), Person(), 3);
array(1, 2, Person());
array(Person(), 2, 3);
array(Person(), Person(), Person());
return 0;
}
此函数的目标是解析非POD类型,而无需再次调用它们的构造函数-析构函数对(不会“复制”对象),
它还可以传递POD类型。
是的,允许使用功能模板