为什么alignas()不带参数包?

Adr*_*ian 5 c++ g++ visual-c++ c++11 clang++

根据cppreference.com


alignas说明符(自C ++ 11起)

指定类型或对象的对齐要求。

句法

alignas( expression
alignas( type-id
alignas( pack ...

  1. alignas(expression) 必须是整数常量表达式,其值为零,或者为比对或扩展比对的有效值。

  2. 相当于 alignas(alignof(type))

  3. 等效于应用于同一声明的多个alignas声明符,每个参数包成员一个,可以是类型或非类型参数包。


那么,为什么以下代码不适用于g ++,clang或VC ++?

struct alignas(1, 4) A {};
Run Code Online (Sandbox Code Playgroud)

要么

struct alignas(int, double) A {};
Run Code Online (Sandbox Code Playgroud)

这是缺陷吗?

编辑

显然,这适用于g ++ 8.2,而不适用于clang ++ 8.0或VC ++ 19.20.27508.1,因此似乎是一个缺陷,并且编译器尚未实现。

编辑

显然,在cygwin bash shell中运行MinGW的g ++编译器会导致奇怪的行为。在MinGW的bash shell中运行时效果很好。因此,不,这在g ++ 8.2下也不起作用。