C ++ - Какой компилятор я использую, чтобы заставить работать синтаксис auto eq = [] (…)?

0

Я пытаюсь запустить счетные элементы элементов в векторном коде, указанном в ответе здесь.

Но я выполняю ошибки компиляции в этой функции:

auto h = [](const std::string* s) {
     return std::hash<std::string>()(*s);
};

утверждение Expected expression вокруг [ ]. Я знаю, что это связано с компилятором. Я использую Xcode 5.0.2, поэтому у меня есть возможность изменить компилятор (я думаю).

Затем я получаю еще одну ошибку компиляции в строке:

std::unordered_map<const std::string*, size_t, decltype(h), decltype(eq)> m(v.size(), h, eq);

в заявлении C++ requires a specifier for all declarations вокруг части m(v.size(), h, eq).

Каким компилятором я должен убедиться, что Xcode компилируется, чтобы заставить этот код работать?

Обновить:

Есть ли определенное имя для этого auto = [ ](...) которое я мог бы использовать Google?

  • 0
    Не уверен, но xcode не подразумевает лязг ?
  • 1
    лязг 3.1 или позже; gcc 4.5 или позже; см. gcc.gnu.org/projects/cxx0x.html и clang.llvm.org/cxx_status.html
Показать ещё 5 комментариев
Теги:
xcode
compiler-construction

1 ответ

1
Лучший ответ

Знаете ли вы, какой стандарт принимает во внимание?

Попробуйте заставить С++ 11, чтобы покрыть эти lambda структуры и unordered_map.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню