2

以下のコードでは、イテレーター ヘッダーを含めずに insert_iterator を作成しています。これがどのようにコンパイルされる可能性がありますか? 私はc/c++を初めて使用するので、これには明白な説明がある可能性があります。

#include <list>
//#include <iterator>

int main()
{

    std::list<int> mylist(10,1);
    std::insert_iterator<std::list<int> > it(mylist,mylist.begin());

    return(0);
}
4

1 に答える 1

7

<list>あなたの場合、他のヘッダーの一部もプルしているため、たまたまコンパイルさ<iterator>れます。これは、ある実装では問題なく動作する可能性がありますが、別の実装では失敗するか、現在のライブラリ実装の次のバージョンでも失敗する可能性があります。

どこでもコンパイルできるように、使用するものを定義するヘッダーを常に含める必要があります。他の標準ヘッダーによってプルされる標準ヘッダーのいくつかの保証があることに注意してください。ただし、これはそれらの例外の 1 つではないと思います。

于 2013-02-16T18:16:56.037 に答える