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 помечает с ошибкой.
Кто-нибудь когда-нибудь встречал эту проблему? Пожалуйста, помогите мне решить эту проблему, большое спасибо!

3

Решение

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

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

2

Другие решения

Других решений пока нет …