При использовании 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 помечает с ошибкой.
Кто-нибудь когда-нибудь встречал эту проблему? Пожалуйста, помогите мне решить эту проблему, большое спасибо!
Многие IDE используют интерфейсную проверку синтаксиса, которая отличается от их внутреннего компилятора. Eclipse Kepler (выпущен в июне 2013 г.) в основном соответствует синтаксису C ++ 11, хотя некоторые вещи, такие как поддержка выравнивания и взаимодействие с инициализаторами в классе и конструкторами по умолчанию, могут не поддерживаться полностью (пока). Похоже, C ++ 14 функций, таких как decltype(auto)
будет работать, если внутренний компилятор вызывается с std=C++1y
но не будет распознаваться интерфейсной проверкой синтаксиса.
НОТА: это не уникально для Eclipse, также Visual C ++ Intellisense иногда работает позади (особенно в версиях CTP) фактического компилятора, вызывая красные волнистые линии.
Других решений пока нет …