Эксперименты с C ++ 11, почему я не могу использовать некоторые из функций?

В настоящее время я рассматриваю новые возможности C ++ 11, и по непонятным на данный момент причинам некоторые из них не компилируются . Я использую gcc версии 4.6.0 20100703 (экспериментальный) (GCC), поэтому, согласно GNU GCC FAQ, все функции, которые я пробовал, поддерживаются . Я попытался скомпилировать оба флага std = c ++ 0x и std = gnu ++ 0x.

Не члены begin () и end ()

Например, я не хочу использовать не члены begin () и end () в фрагменте кода вроде:

#include 
#include 
#include 
#include 

using namespace std;
int main ( ) {
    map < string, string > alias;
    alias.insert ( pair < string, string > ( "ll", "ls -al" ) );
    // ... Other inserts

    auto it = begin(alias);
    while ( it != end(alias) ) {
        //...
    }

И я получаю,

nonMemberBeginEnd//main.cc:15:24: error: ‘begin’ was not declared in this scope
nonMemberBeginEnd//main.cc:15:24: error: unable to deduce ‘auto’ from ‘’ // Ok, this one is normal.
nonMemberBeginEnd//main.cc:16:26: error: ‘end’ was not declared in this scope

Нужно ли мне включать специальные заголовки?

Для диапазона

Мой второй (и последний) вопрос более странный, потому что он не может зависеть от скрытого заголовка черной магии, который я, возможно, не включил.

Следующий код:

for ( auto kv : alias )
    cout << kv.first << " ~ " << kv.second << endl;

Выдайте мне следующие ошибки:

rangeFor/main.cc:15:17: error: expected initializer before ‘:’ token

Надеюсь, мои вопросы не не по теме и не слишком новички для вас, ребята, и вы поможете мне выяснить, что случилось: D

6
задан ildjarn 1 November 2011 в 19:28
поделиться