Ожидаемое первичное выражение перед `alignas (X)`?

Я хочу проверить использование 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 ++, компилятор выдает ошибку: «ожидаемое первичное выражение перед alignas(X)«. Кто бы мог объяснить это? Я не знаю точного употребления alignas(),

0

Решение

alignas(X) является спецификатором aligment, который применяется к типу. Ваша ошибка происходит, потому что вы не указали тип здесь.

Судя по остальной части кода, вы, вероятно, захотите создать выровненный буфер символов: alignas(X) char buffer[bufmax];

0

Другие решения

добавить тип данных

буфер char alignas (X) [bufmax];
выровнять (X) буфер символов [bufmax];

Я тоже натолкнулся на то же самое, читая книгу.

0