https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97739
Bug ID: 97739 Summary: alignas() fails to compile with const expression like std::max or std::min Product: gcc Version: 8.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: stanislav.pikulik at lge dot com Target Milestone: --- #include <algorithm> template <typename T> constexpr T foo(T arg) { return arg; } template <typename T> constexpr auto bar(T arg1, T arg2) { return arg1>arg2 ? arg1 : arg2; } int main() { alignas(foo(2)) char a1[3]; // ok alignas(bar(1,2)) char a2[3]; // ok const size_t b3 = std::max(1,2); alignas(b3) char a3[3]; // ok constexpr size_t b4 = std::max(1,2); alignas(b4) char a4[3]; // ok alignas(std::max(1,2)) char a5[3]; // error: requested alignment is not an integer constant return 0; }