Как сообщить об этом ICE для gcc-trunk

Я хотел бы, чтобы этот код работал

#include <cstddef>

template <bool B, auto T, auto F>
struct conditional { static constexpr auto value = T; };

template <auto T, auto F>
struct conditional<false, T, F> { static constexpr auto value = F; };

template <std::size_t N, auto... Dims>
struct static_extent;

template <std::size_t N>
struct static_extent<N> {
static constexpr std::size_t value = 0;
};

template <std::size_t N, auto Dim, auto... Dims>
struct static_extent<N, Dim, Dims...> {
static constexpr auto value =
conditional<
(N == 0),
Dim,
static_extent<N-1, Dims...>::value
>::value;
};

enum class dynamic_extent_tag {};
inline constexpr dynamic_extent_tag dyn{-1};

int main()
{
static_assert(static_extent<1, 33, dyn, 19>::value == dyn, "");
static_assert(static_extent<0, 33, dyn, 19>::value == 33, "");
}

Я проверил это на godbolt и, кажется, работает с Clang. К сожалению, я связан с gcc, который дает мне ICE плюс трассировку стека. Я пытался путешествовать по своим Bugzilla и я немного потерян.

Стоит ли даже выкладывать отчет об ошибке для транковой версии? Это даже хотел?
Кто-нибудь знает, если это уже известная проблема?
Я искал ключевое слово «лед», но не смог найти там ничего полезного.

2

Решение

Да, обо всех ДВС следует сообщать.

Я открыла https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79556 для тебя.

Благодарю.

1

Другие решения

Других решений пока нет …