В настоящее время я использую книгу "Teach Yourself С++" за 21 день, второе издание, чтобы узнать о кодировании на С++, а также Microsoft Visual С++ 2010 Express. В конце главы 1 есть небольшое упражнение о написании и компиляции следующего кода:
#include <iostream>
int main ()
{
    cout << "Hello World!\n";
    return 0;
}
Довольно просто, не так ли? Однако, к моему удивлению, код не будет компилироваться из-за этой ошибки:
ошибка C2065: 'cout': необъявленный идентификатор
Я начал чистить Web и вскоре нашел несколько решений здесь. Оказывается, мне пришлось добавить
using namespace std; моему коду!
Однако в книге не было упоминания о пространствах имен, поэтому я решил, что книга устарела. (Он использует директиву #include <iostream.h> pre-processor!). После нескольких веб-исследований я нашел много информации об пространствах имен namespace std, а также некоторый исторический фон на <iostream.h> и <iostream>, и весь этот поток новых информация довольно запутанная для меня. (Не говоря уже обо всех ненужных результатах Google о медицинских ЗППП...)
Итак, вот некоторые вопросы, которые я получил до сих пор:
-  Если я включаю библиотеку iostream, зачем нуженnamespaceдля поискаcout? Есть ли ещеcoutгде-нибудь, что может вызвать конфликт имен? Если бы кто-то мог предоставить диаграмму для этого, это было бы здорово.
И как бонус, некоторый исторический фон:
-  Что именно было iostream.hдо того, как оно было изменено наiostream?
-  Разве namespaceсыграл роль в этом изменении?
