289得票10回答
解包元组以调用匹配的函数指针

我想在一个std::tuple中存储可变数量的值,这些值稍后将用作匹配存储类型的函数指针的参数。 我创建了一个简化的示例来展示我正在努力解决的问题: #include <iostream> #include <tuple> void f(int a, double...

226得票6回答
make_unique 和完美转发

为什么标准的C++11库中没有std::make_unique函数模板?我发现这个问题非常困扰。 std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); 有点啰嗦。以下的表述不是更好吗...

149得票1回答
如何在可变参数函数中对所有参数调用std::forward?

我刚刚在编写一个通用对象工厂,并使用boost预处理器元库来制作可变参数模板(使用2010年的版本,它不支持它们)。我的函数使用右值引用和std::forward进行完美转发,这让我想起了一个问题...当C++0X推出并且我有一个标准编译器时,我将使用真正的可变参数模板。 不过,我该如何对参数...

118得票2回答
“... ...”标记的含义是什么?即参数包上的双省略号运算符。

在浏览gcc的新C++11头文件实现时,我偶然发现了"......"标记。你可以检查以下代码在godbolt.org上编译良好。 template <typename T> struct X { /* ... */ }; template <typename T, typ...

105得票2回答
在可变参数模板的上下文中,“...”标记的规则是什么?

在C++11中有类似这样的可变模板: template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args ) { return unique_ptr<T...

105得票2回答
C++11:可变参数模板函数的参数数量?

如何获取可变参数模板函数的参数数量计数? 例如: template<typename... T> void f(const T&... t) { int n = number_of_args(t); ... } 在上述情况下,实现number_of...

102得票13回答
美化打印std::tuple

这是对我之前关于在美化STL容器问题的跟进,我们已经成功开发了一种非常优雅且完全通用的解决方案。 在下一步中,我想使用可变参数模板(因此这仅限于C++11)为std::tuple<Args...>包括漂亮的打印。对于std::pair<S,T>,我只需说std::...

100得票4回答
如何存储可变模板参数?

是否有办法在稍后使用时存储参数包?template <typename... T> class Action { private: std::function<void(T...)> f; T... args; // <--- s...

94得票6回答
如何使用参数包展开循环遍历?

我正在尝试学习变长模板和函数。我不明白为什么这段代码无法编译: template<typename T> static void bar(T t) {} template<typename... Args> static void foo2(Args... args...

85得票9回答
如何迭代打包的可变模板参数列表?

我正在寻找一种迭代变参模板参数列表的方法,这与所有迭代一样,您需要一些知道打包列表中有多少参数的方法,并更重要的是如何从打包参数列表中单独获取数据。 总体思路是遍历列表,将int类型的所有数据存储到向量中,将char*类型的所有数据存储到另一个向量中,将所有float类型的数据存储到第三个向...