当使用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);
}
这个问题发生了什么,虽然代码片段通过了comiple,但Eclipse标记有错误。 有人遇到过这个问题吗?请帮助我解决这个问题,非常感谢!
答案 0 :(得分:2)
许多IDE使用与其后端编译器不同的前端语法检查程序。 Eclipse Kepler(2013年6月发布)主要是使用C ++ 11语法的最新版本,尽管可能还不完全支持对齐支持以及与类内初始化器和默认构造器的交互等。类似地,如果使用decltype(auto)
调用后端编译器但前端语法检查器无法识别,则std=C++1y
等C ++ 14功能将起作用。
注意:这不是Eclipse独有的,而且Visual C ++ Intellisense有时会在实际编译器后面运行(特别是在CTP版本中),导致红色波浪线。