【发布时间】:2026-01-09 22:20:07
【问题描述】:
我想测试alignas()的使用,所以写下这些代码:
#include <vector>
using namespace std;
template<typename X>
void user(const vector<X>& vx)
{
constexpr int bufmax = 1024;
alignas(X) buffer[bufmax];
const int max = min(vx.size(), bufmax / sizeof(X));
uninitialized_copy(vx.begin(), vx.begin()+max, buffer);
}
但是,当我使用 g++ 编译它时,编译器会输出错误:“expected primary-expression before alignas(X)”。谁能解释一下?我不知道alignas()的具体用法。
【问题讨论】:
-
buffer的类型是什么? -
我猜是
X。这些代码来自《The C++ Programming Language 4th edition》一书。 -
我的措辞可能不正确。第 9 行的哪一部分指定了
buffer的类型?也是强制性的:你使用什么版本的 GCC?你是否开启了 C++11 功能? -
GCC的版本是5.3.0,是的,我开启了c++11的特性。其实我也不确定
buffer的类型,alignas(X)是不是声明?
标签: c++ c++11 alignment alignas