From d033d92b0524c23e1274f07c9cbaa02ead770bbc Mon Sep 17 00:00:00 2001
From: Tillmann Karras <tilkax@gmail.com>
Date: Sat, 11 Jun 2022 14:39:04 +0100
Subject: [PATCH] Move to C++20 for non-MSVC compilers

---
 Externals/fmt/include/fmt/format.h | 2 +-
 Source/CMakeLists.txt              | 2 +-
 Source/Core/Common/CDUtils.cpp     | 2 +-
 Source/Core/UICommon/GameFile.cpp  | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Externals/fmt/include/fmt/format.h b/Externals/fmt/include/fmt/format.h
index 31a2e7af85..d65f14a189 100755
--- a/Externals/fmt/include/fmt/format.h
+++ b/Externals/fmt/include/fmt/format.h
@@ -2198,7 +2198,7 @@ FMT_CONSTEXPR20 auto do_write_float(OutputIt out, const DecimalFP& fp,
     -> OutputIt {
   auto significand = fp.significand;
   int significand_size = get_significand_size(fp);
-  static constexpr Char zero = static_cast<Char>('0');
+  const Char zero = static_cast<Char>('0');
   auto sign = fspecs.sign;
   size_t size = to_unsigned(significand_size) + (sign ? 1 : 0);
   using iterator = reserve_iterator<OutputIt>;
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index cca7a20f2a..7e5b548864 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -18,7 +18,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Windows")
 endif()
 
 if (NOT MSVC)
-  set(CMAKE_CXX_STANDARD 17)
+  set(CMAKE_CXX_STANDARD 20)
   set(CMAKE_CXX_STANDARD_REQUIRED ON)
   set(CMAKE_CXX_EXTENSIONS OFF)
 endif()
diff --git a/Source/Core/Common/CDUtils.cpp b/Source/Core/Common/CDUtils.cpp
index 630f5d943d..d17b3d4ab3 100644
--- a/Source/Core/Common/CDUtils.cpp
+++ b/Source/Core/Common/CDUtils.cpp
@@ -195,7 +195,7 @@ std::vector<std::string> GetCDDevices()
   {
     for (unsigned int j = checklist[i].num_min; j <= checklist[i].num_max; ++j)
     {
-      std::string drive = fmt::format(checklist[i].format, j);
+      std::string drive = fmt::format(fmt::runtime(checklist[i].format), j);
       if (IsCDROM(drive))
       {
         drives.push_back(std::move(drive));
diff --git a/Source/Core/UICommon/GameFile.cpp b/Source/Core/UICommon/GameFile.cpp
index 6e33f480e0..e605f987eb 100644
--- a/Source/Core/UICommon/GameFile.cpp
+++ b/Source/Core/UICommon/GameFile.cpp
@@ -291,7 +291,7 @@ void GameFile::DownloadDefaultCover()
   }
 
   Common::HttpRequest request;
-  constexpr char cover_url[] = "https://art.gametdb.com/wii/cover/{}/{}.png";
+  static constexpr char cover_url[] = "https://art.gametdb.com/wii/cover/{}/{}.png";
   const auto response = request.Get(fmt::format(cover_url, region_code, m_gametdb_id));
 
   if (!response)