0

我想测试使用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().

4

2 回答 2

0

将以下数据类型添加到您的代码中

char alignas(X) buffer[bufmax];

alignas(X) char buffer[bufmax];

我在看书的时候也碰到了同样的问题。

于 2017-12-26T13:15:51.237 回答
0

alignas(X)是一个对齐说明符,应用于类型。发生错误是因为您没有在此处指定类型。

从代码的其余部分来看,您可能想要创建对齐的字符缓冲区:alignas(X) char buffer[bufmax];

于 2017-03-15T04:53:42.530 回答