Скорее всего, вы забыли -std = c ++ 0x.
Моя версия gcc для Mingw - 4.6.1 / 4.7.1, обе хорошо поддерживают nullptr.
Согласно описанию в «Стандартной библиотеке c ++, учебное пособие и справочник, 2-е», nullptr является ключевым словом, может автоматически преобразовываться в каждый тип указателя, но не в целочисленный тип, это устраняет недостаток NULL, который неоднозначен для следующая функция перегрузки:
void f (int);
void f (void *);
F (NULL); // Неоднозначно
F (nullptr); // ОК
Проверка этой функции в VC2010 показывает, что документ MSDN конфликтует с фактическим компилятором, в документе сказано:
Ключевое слово nullptr не является типом и не поддерживается для использования с:
SizeOf
TypeId
throw nullptr
На самом деле в VC2010 все вышеперечисленные операторы / выражения являются законными. sizeof (nullptr) результат 4. typeid.name () результат std :: nullptr_t, а throw nullptr может быть перехвачен "const void *" и "void *" (и другими типами указателей).
Хотя gcc (4.7.1) выглядит более жестко в отношении nullptr, throw nullptr не может быть пойман "void *", может быть пойман '...'