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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2025-09-16
             Status|UNCONFIRMED                 |WAITING

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Hi Benjamin!

I tried to reproduce the error by filling in the blanks and couldn't. This
compiles fine with and without -DWHICH

#include <string>
#include <tuple>

std::string convert_to_utf8(std::string);

namespace geo
{
  enum class iplocation_mode { maxmind_1, other };
  constexpr int city = 0;
}

namespace k
{
#ifdef WHICH
  constexpr auto geolocation_state = geo::iplocation_mode::maxmind_1;
#else
  constexpr auto geolocation_state = geo::iplocation_mode::other;
#endif
}

using std::string;

template<typename T>
void f(T p)
{
  if constexpr (k::geolocation_state == geo::iplocation_mode::maxmind_1)
    string city = convert_to_utf8(std::get<geo::city>(p));
  else
    string city = std::get<geo::city>(p);
}

int main()
{
  std::tuple<std::string> t;
  f(t);
}


So we'll need more context.

Reply via email to