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) фактического компилятора, вызывая красные волнистые линии.