Я хотел бы получить этот код работатьКак сообщить об этом ICE для GCC стволу
#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 и это похоже на работу с лязгом. Я, к сожалению, привязан к gcc, который дает мне ICE плюс трассировку стека. Я попытался заняться серфингом на своих bugzilla, и я немного потерян.
Стоит ли даже составлять отчет об ошибке для версии багажника? Он даже нужен? Кто-нибудь знает, если это уже известная проблема? Я искал ключевое слово «лед», но я не мог найти там ничего полезного.
* «Стоит ли даже составлять отчет об ошибке для версии для транков? Он даже нужен?» * Я бы так сказал, да - может быть, больше, чем любая другая версия! –
похоже, что вы можете искать только bugzilla, если вы вошли в систему, и что новые учетные записи в настоящее время не разрешены из-за спама. Таким образом, вам не повезло, если кто-то не зарегистрировал эту ошибку для вас. – TemplateRex
Ну, я думаю, теперь это может быть в bugzilla. Я проверил сегодня, и я верю, что сегодня было представление, которое тоже прикоснулось к моей проблеме. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79549 – Maikel