C++ 通过变量参数列表传递共享_ptr

C++ 通过变量参数列表传递共享_ptr,c++,shared-ptr,variadic-functions,C++,Shared Ptr,Variadic Functions,这是否可行?我将如何通过共享的ptr?我发现了一些相关的问题(),但它并没有完全解决我的问题。 我尝试了几种方法来编写这样的函数,但我得到的只是一个错误错误:无法通过“…”接收非平凡可复制类型“class std::shared_ptr”的对象 如果这根本不是一个好主意,我怎么能将任意数量的共享\u ptr作为参数传递,几乎是可变模板之类的?也许这比我想象的还要简单 谢谢你的帮助 使用C++11,您可以使用可变模板或初始值设定项列表。初始值设定项列表更易于使用,因为它们不需要递归,并且可以在单独

这是否可行?我将如何通过共享的ptr?我发现了一些相关的问题(),但它并没有完全解决我的问题。 我尝试了几种方法来编写这样的函数,但我得到的只是一个错误
错误:无法通过“…”接收非平凡可复制类型“class std::shared_ptr”的对象

如果这根本不是一个好主意,我怎么能将任意数量的共享\u ptr作为参数传递,几乎是可变模板之类的?也许这比我想象的还要简单


谢谢你的帮助

使用C++11,您可以使用可变模板或初始值设定项列表。初始值设定项列表更易于使用,因为它们不需要递归,并且可以在单独的编译单元中定义:

void foobar(std::initializer_list<std::shared_ptr<widget>> widgets);

std::shared_ptr<widget> foo;
std::shared_ptr<widget> bar;
foobar({ foo, bar });
void foobar(std::initializer\u list小部件);
std::共享\u ptr foo;
std::共享的ptr条;
foobar({foo,bar});

为什么不使用可变模板?我同意@DavidBrown@DavidBrown:我从来没有使用过可变模板,所以我不确定它是否有效(实际上我还没有尝试过)。初始值设定项列表似乎也是一个不错的选择!我也会尝试一下。我最终尝试了这个方法(也使用了可变模板),它似乎很有效。谢谢你的提示。我只需要更多地了解C++11的细节和选项。。。