-
213 votesanswersviews
make_unique和完美的转发
为什么标准C 11库中没有 std::make_unique 功能模板?我发现 std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); 有点冗长 . 以下不是更好吗? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); ... -
648 votesanswersviews
T &&(双&符号)在C 11中意味着什么?
我注意到在声明变量时是双&符号,如 T&& var . 首先,这只野兽叫什么?我希望谷歌允许我们搜索这样的标点符号 . 究竟是什么意思? 乍一看,它似乎是一个双引用(如C风格的双指针 T** var ),但我很难想到一个用例 . -
82 votesanswersviews
如何在可变参数函数中的所有参数上调用std :: forward?
我只是编写一个通用对象工厂并使用boost预处理器元库来创建一个可变参数模板(使用2010并且它不支持它们) . 我的函数使用rval引用和 std::forward 进行完美的转发,它让我思考...当C 0X出来并且我有一个标准的编译器时,我会使用真正的可变参数模板 . 但是,我怎么称呼 std::forward ? template <typename ...Params> voi... -
7 votesanswersviews
您是否可以将C RValue参考参数标记为const
我一直在切换模板工厂函数来使用(和理解)std :: forward来支持rvalues和移动语义 . 我通常用于模板类的样板工厂函数始终将参数标记为const: #include <iostream> #include <utility> template<typename T, typename U> struct MyPair{ MyPair(c...