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

            Bug ID: 89212
           Summary: [8 regression] ICE in fold_convert_loc at
                    fold-const.c:2552
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: miklos.puspan at gmail dot com
  Target Milestone: ---

compiling the following snippet with -std=c++14, from 8.0 - 8.1 - 8.2 - trunk
causes ICE (between 4.9 - 7.4 it worked fine)

(it conditionally creates a ctor when the class template parameter (member
function pointer non-type) is defaulted to nullptr.)

#include <type_traits>

template<class X, void(X::*foo)() = nullptr>
struct p
{
    template<void(X::*fun)() = foo, typename T = std::enable_if_t<nullptr ==
fun, int>>
    p(T) { }
    p() = default;
};

struct A
{
    p<A> i = 1;
    void bar();
    p<A, &A::bar> j;
};

i have seen several simmilar possible duplicates, but with very different
snippets, e.g. #88976 , but i am not sure.

Reply via email to