У меня есть класс, который объявляет это публичный метод:C++ 11 инициализации равномерная не работает с "г ++ -std = C++ 0x"
virtual std::vector<float> operator()(const std::vector<float>& = {});
, который использует однородную инициализацию (здесь только {}
) , функция C++ 11. Это не дает мне проблем при компиляции с clang++ -std=c++11
. Но когда я использую g++ -std=c++0x
я получаю это:
error: expected primary-expression before '{' token
ли не -std=c++0x
Предполпгпется Принеси мне C++ 11 поддержки?
компилятор не дает мне какие-либо ошибки при объявлении метода с использованием стандартного C++, как это:
virtual std::vector<float> operator()(const std::vector<float>& = std::vector<float>());
Я использую г ++ 4.6 на Ubuntu 12,04
Не уверен, что вы запрашиваете 'std = C++ 0x' не поддержку C++ 11, это до-11, как было понято разработчиками gcc в день 4.6. Если вам нужен полный C++ 11, используйте '-std = C++ 11'. – SergeyA
Похож на gcc-ошибку. он компилируется в 4.7.3 и выше: https://godbolt.org/g/gy9Kb5 – NathanOliver
Теперь есть C++ 11/C++ 14, нет смысла использовать C++ 0x/C++ 1y. и как только C++ 17 выйдет из C++ 1z, тоже будет ненужным. – Jarod42