問題を次のように減らしました。
struct A {
static constexpr std::size_t f() { return 4; }
};
template<std::size_t N>
struct B : A {
alignas(A::f()) char a[N];
};
これの何が問題なのかわかりませんが、次を使用してコンパイルしようとするとg++
:
main.cpp:9:19: error: expression 'A::f' is not a constant-expression
alignas(A::f()) char a[N];
^
main.cpp:9: confused by earlier errors, bailing out
複製はcoliruで入手できます。