このことを考慮:
std::vector<int*> v(1, 0);
これはVC++10で正常にコンパイルされます(最大警告レベルでも警告はありません)。ただし、macの場合はllvm、Linuxの場合はgccでコンパイルされないため、「互換性のない型constintからint*に割り当てます」などのエラーが発生します。私は解決策を探していません-2番目のパラメーターが不要であるか、static_castがエラーを修正することを知っています。
ゼロは暗黙的に任意のポインタ型に変換できると思いました。何が得られますか?私は次のことができます:
int* i = 0;
int* const& ii = 0;
const int t = 0;
i = t;
const T&
ベクトルコンストラクターの署名は、展開すると正しくvector<int*>
なるものを取ることを理解していint* const&
ますか?誰かがここで何が起こっているのか、そしてVC++または非VC++コンパイラが正しいかどうかを説明できますか?