https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91122

            Bug ID: 91122
           Summary: alignas gives up evaluating a constant expression in
                    template context
           Product: gcc
           Version: 9.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bruno.manga95 at gmail dot com
  Target Milestone: ---

The following code:


template <class T>
constexpr T min( const T& a, const T& b)
{
    return a < b ? a : b;
}
template <class T, unsigned long N>
constexpr unsigned long alignment()
{
    return min(sizeof(T), N);
}
template <class T, unsigned long N>
struct alignas(alignment<T, N>()) foo {};

int main()
{
    foo<int, 4> f;
}

fails to compile on gc 9.1, but worked on previous releases and works again on
trunk: https://gcc.godbolt.org/z/0dSqva

I'm just wondering if the fix will be backported to gcc 9.2

Reply via email to