以下代码在使用 STLPort 时编译良好:
std::vector<Engine::Screen::IOverlay*> Overlays;
auto TestOverlay=new Engine::Screen::Overlay();
Overlays.push_back(TestOverlay);
但是,当使用 libstdc++ 编译时,出于某种原因,它会尝试使用移动构造函数:
error : cannot bind 'Engine::Screen::IOverlay*' lvalue to 'Engine::Screen::IOverlay*&&' ...\android-ndk-r8\sources\cxx-stl\gnu-libstdc++\include\bits\move.h
这是一个非常基本的示例,但是当使用 push_back 时,此问题会在所有本地指针的应用程序中发生。
move.h 中发生错误:
template<typename _Tp>
inline typename std::remove_reference<_Tp>::type&&
move(_Tp&& __t)
{ return __t; }
示例 2(我写的另一个基本测试:)
class TestClass {};
auto TestInstance=new TestClass;
std::vector<TestClass*> TestVector;
TestVector.push_back(TestInstance);
我用 ndk r8 编译: -std=c++11 -D__STDC_INT64__