が、この考えてみましょう。しかし、llvm(llvm on linux)やlinux(linux上のgcc)でコンパイルしていないので、 "inc *に互換性のない型const intから代入する"のようなエラーが出ます。私は解決策を探していない - 私は2番目のパラメータが不必要であること、またはstatic_castがエラーを修正することを知っている。ポインタのベクトルを明示的に初期化すると、変換エラーが発生しますか?</p> <pre><code>std::vector<int*> v(1, 0); </code></pre> <p>これは、VC++ 10(でも最大警告レベルで警告なし)と罰金コンパイル:
ゼロは、暗黙的に任意のポインタ型に変換可能であると考えました。何がありますか?私は、次の操作を行うことができます
int* i = 0;
int* const& ii = 0;
const int t = 0;
i = t;
私はベクトルのコンストラクタの署名がvector<int*>
のために拡張したとき修正int* const&
なりconst T&
かかることを理解できますか?誰かがここで何が起こっているのか、VC++かVC++コンパイラが正しいかどうかを説明できますか?
'0'ではなく' nullptr'を試してください。 – ildjarn
これをC++ 03またはC++ 11のプログラムとしてコンパイルしていますか? –
質問には関係ありませんが、なぜ、ビンネーが避けなければならないとしたら、生のポインタを使用していますか?(http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Keynote-Bjarne-Stroustrup-Cpp11-スタイル)? –