alignas(T) не разрешен в функции шаблона

При использовании Eclipse с MinGW(версия:4.8.1) для компиляции следующего фрагмента кода он может пройти, но Eclipse по-прежнему сообщает: "Несколько маркеров в этой строке - не удается разрешить тип 'alignas'"

template<typename X> void set_aside(std::vector<X> vx) {
    constexpr int max_buf = 1024;
    alignas(X) X buffer[max_buf];

    int max = min(vx.size(), max_buf / sizeof(X));
    std::uninitialized_copy(vx.begin(), vx.begin() + max, buffer);
}

Что случилось с этой проблемой, хотя код фрейма проходит мимо, тем не менее Eclipse помечает с ошибкой. Кто-нибудь когда-нибудь встречал эту проблему? Пожалуйста, помогите мне решить эту проблему, большое спасибо!

1 ответ

Многие IDE используют интерфейсную проверку синтаксиса, которая отличается от их внутреннего компилятора. Eclipse Kepler (выпущен в июне 2013 года) в основном соответствует синтаксису C++11, хотя некоторые вещи, такие как поддержка выравнивания и взаимодействие с инициализаторами в классе и конструкторами по умолчанию, могут не поддерживаться полностью (пока). Похоже, C++14 функций, таких как decltype(auto) будет работать, если внутренний компилятор вызывается с std=C++1y но не будет распознаваться интерфейсной проверкой синтаксиса.

ПРИМЕЧАНИЕ: это не уникально для Eclipse, также Visual C++ Intellisense иногда работает позади (особенно в версиях CTP) фактического компилятора, вызывая красные волнистые линии.

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