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

            Bug ID: 115803
           Summary: ICE: tree check: expected class 'type', have
                    'constant' (integer_cst) in cp_type_quals, at
                    cp/typeck.cc:11646
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hewillk at gmail dot com
  Target Milestone: ---

#include <tuple>
#include <variant>

auto get_n = []<class Tuple>(Tuple&& t, std::size_t index) {
  using variant_type = decltype(std::apply([]<class... Ts>(Ts...){
    return std::variant<Ts...>{};
  }, t));

  return [&]<std::size_t... Is>(std::index_sequence<Is...>) {
    std::array<variant_type(*)(Tuple&&), 2> fs = {
    +[](Tuple&& tup){ return variant_type{std::get<Is>(tup)};}... };
    return fs[index](t);
  }(std::make_index_sequence<2>());
};

int main() {
  std::visit( [](auto&& v) { }, get_n(std::tuple{1,2.}, 1));
}

https://godbolt.org/z/xYvoqfPeo

Reply via email to