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

Fabian Knorr <ers.trion at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ers.trion at gmail dot com

--- Comment #4 from Fabian Knorr <ers.trion at gmail dot com> ---
Not resolved: The patch fixes the tests from Comment 1, but code in the OP
remains broken.

Here's another reproducer:

template<int Dims>
struct restrictive {
    static_assert(Dims != 0);
};

template<int Dims>
struct permissive {
    operator restrictive<Dims>() const;
};

struct unrelated {};

void fun(unrelated) {}

void fun(permissive<0>) {}

int main() {
    fun(permissive<0>{});
}

x86_64 gcc 14.2:

<source>: In instantiation of 'struct restrictive<0>':
<source>:18:8:   required from here
   18 |     fun(permissive<0>{});
      |     ~~~^~~~~~~~~~~~~~~~~
<source>:3:24: error: static assertion failed
    3 |     static_assert(Dims != 0);
      |                   ~~~~~^~~~
<source>:3:24: note: the comparison reduces to '(0 != 0)'

Reply via email to