Поддержка C++11 в Emscripten

Я хотел бы скомпилировать код C++ с использованием Emscripten, где я использую некоторые функции C++ 11. К сожалению я получаю ошибку:

index.cpp:13:18: error: expected expression
    vv.push_back({1.5f, 2.f});
                 ^
index.cpp:14:18: error: expected expression
    vv.push_back({5.f, 0});
                 ^
index.cpp:15:18: error: expected expression
    vv.push_back({1, 1});
                 ^
index.cpp:17:9: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
    for(auto& item : vv) {
        ^
index.cpp:17:20: warning: range-based for loop is a C++11 extension [-Wc++11-extensions]
    for(auto& item : vv) {

Я не могу понять, почему я получаю эти ошибки. Новейшие версии Emscripten и Clang активируются с помощью emsdk,

Код является:

#include<iostream>
#include<vector>

struct AA {
    float a;
    float b;
};

int main() {

    std::vector<AA> vv;

    vv.push_back({1.5f, 2.f});
    vv.push_back({5.f, 0});
    vv.push_back({1, 1});

    for(auto& item : vv) {

        std::cout << item.a << ' ' << item.b << std::endl;

    }

}

Я даже получаю сообщение: LLVM version appears incorrect (seeing "4.0", expected "3.7")

Если это правда, он должен работать, потому что "Clang 3.3 и более поздние версии реализуют весь стандарт ISO C++ 2011".

1 ответ

Решение

Предложение: добавить -std=c++11 к вашим опциям компилятора.

-Wc++11-extensions это флаг для добавления предупреждений, а не для добавления поддержки C++11.

Другие вопросы по тегам