我正在尝试在我的代码中使用std::move
,但我使用的编译器(g ++ 4.4)不支持它。可以boost::move
完全替换std::move
吗?谢谢。
答案 0 :(得分:11)
if ($category->getIsActive()) {
$cat = Mage::getModel('catalog/category')->load($category->getId());
$products = Mage::getResourceModel('catalog/product_collection')->addCategoryFilter($cat);
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products);
if(count($products)==0)
return;
}
(以及std::move
启用c ++ 0x支持时)只是从boost::move
到T&
的强制转换。它实际上并没有移动任何东西。这意味着编译器必须支持特定类型的指针T&&
。从版本4.3开始,GCC支持r值引用,因此boost版本应该没问题。
但是,您是否有理由不能使用T&&
中的std::move
?
http://en.cppreference.com/w/cpp/utility/move
您只需确保将#include <utility>
指定为编译器选项,以便启用gcc 4.4支持的有限c ++ 11支持。
答案 1 :(得分:8)
是的,它可以
什么是Boost.Move?
Rvalue引用是一个主要的C ++ 0x功能,支持移动语义 对于C ++值。但是,我们不需要C ++ 0x编译器 移动语义学的优势。 Boost.Move模拟C ++ 0x移动语义 在C ++ 03编译器中,允许编写可行的可移植代码 最佳地在C ++ 03和C ++ 0x编译器中。
来源: http://www.boost.org/doc/libs/1_59_0_b1/doc/html/move.html