Ожидаемое первичное выражение перед `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(),

2 ответа

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

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

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

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

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

Другие вопросы по тегам