Я использую Intel C++ Compiler версии 15.0.0.108 сборки 20140726, и я не могу использовать некоторые C++ 14 функций, таких как "decltype (авто), тип возвращаемого значения вычет для нормальных функций" объявил поддержку здесь
Если я сделаю что-то вроде:
std::for_each(vector.begin(), vector.end(), [] (auto value) {});
Затем я получил эту ошибку:
Ошибка: "авто" здесь не разрешено
Я компилирую, используя это:
icl /FA /EHs program.cpp
Функция, которую вы пытаетесь использовать, называется общим (полиморфным) лямбда-выражением от N3649, а связанная с ней таблица показывает, что поддержка еще не добавлена. Тем не менее, функция (ы), которые, по вашему мнению, вы используете, "decltype (auto), вывод типа возврата для нормальных функций" из N3638 имеют поддержку.
Общая лямбда выглядит так:
[](auto a) { return a; }
Вывод типа возвращаемого значения для обычных функций выглядит так:
auto func() { return 42; } // deduced to be int
Семантика для decltype(auto)
описана в следующем примере из n3638:
Если заполнитель является спецификатором типа decltype (auto), объявленный тип переменной или тип возвращаемой функции должен быть только заполнителем. Тип, выводимый для переменной или типа возвращаемого значения, определяется, как описано в 7.1.6.2, как если бы инициализатором был операнд типа decltype. [ Пример:
int i; int&& f(); auto x3a = i; // decltype(x3a) is int decltype(auto) x3d = i; // decltype(x3d) is int auto x4a = (i); // decltype(x4a) is int decltype(auto) x4d = (i); // decltype(x4d) is int& auto x5a = f(); // decltype(x5a) is int decltype(auto) x5d = f(); // decltype(x5d) is int&& auto x6a = { 1, 2 }; // decltype(x6a) is std::initializer_list<int> decltype(auto) x6d = { 1, 2 }; // error, { 1, 2 } is not an expression auto *x7a = &i; // decltype(x7a) is int* decltype(auto)*x7d = &i; // error, declared type is not plain decltype(auto)
- конец примера]
/Qstd=<std>
из командной строки имеет опцию/Qstd=<std>
но только сc++11
илиc++0x
, я пробовалc++14
иc++1y
и не работает. Он говорит: неверный аргумент для опции '/ Qstd'.