Я хочу проверить использование 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()
,
alignas(X)
является спецификатором aligment, который применяется к типу. Ваша ошибка происходит, потому что вы не указали тип здесь.
Судя по остальной части кода, вы, вероятно, захотите создать выровненный буфер символов: alignas(X) char buffer[bufmax];
добавить тип данных
буфер char alignas (X) [bufmax];
выровнять (X) буфер символов [bufmax];
Я тоже натолкнулся на то же самое, читая книгу.