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;
}
  • [Bug c++/97739] New: alignas... stanislav.pikulik at lge dot com via Gcc-bugs

Reply via email to