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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |INVALID

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So in the case of if/else, only one side of the if/else is used as it is both
sides are constrained due to the `if constexpr ` while in your second case the
if is constrained but the rest of the function is not.

That is it is similar to:
```
#include <type_traits>

template <typename>
constexpr bool always_false = false;

template<typename T> void f(){
    if constexpr(std::is_same_v<T, int>) {
        return;
    }
    static_assert(always_false<T>);
}

int main() {
    f<int>();
}
```

Which will fail the same way too due to that.

Reply via email to