c ++: создать insert_iterator без #include & lt; iterator & gt;

В приведенном ниже коде я создаю 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);
}

2

Решение

Это происходит скомпилировать, потому что некоторые из других заголовков, <list> в твоем случае тянет <iterator> также. Это может нормально работать с одной реализацией, но не сработать в другой, или даже в следующей версии вашей текущей реализации библиотеки.

Вы должны всегда включать заголовки, которые определяют, что вы используете, чтобы убедиться, что он будет компилироваться везде. Обратите внимание, что есть некоторые гарантии стандартных заголовков, которые извлекаются другими стандартными заголовками, но я не думаю, что это одно из тех исключений.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]