STLPortを使用すると、次のコードが正常にコンパイルされます。
std::vector<Engine::Screen::IOverlay*> Overlays;
auto TestOverlay=new Engine::Screen::Overlay();
Overlays.push_back(TestOverlay);
ただし、libstdc ++でコンパイルする場合、何らかの理由でmoveコンストラクターを使用しようとしています。
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__