From 593ecd0591c4f19912d3ff03130492230c8bef0f Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Wed, 7 Oct 2026 17:26:07 +0200 Subject: [PATCH] Compile against C++23 This enables some new goodies like std::expected. A change was needed in the mod loader code because of *something* to do with unique_ptr on an incomplete type. An overload fixed it, I've learned to stop asking questions about C++ --- CMakeLists.txt | 2 +- include/helpers/endian.h | 1 + mods/custom_actor_demo/CMakeLists.txt | 2 +- src/dusk/mod_loader.hpp | 4 +++- src/dusk/mods/loader/loader.cpp | 3 +++ 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 79ad791eba..abb02ef5bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ if(APPLE AND NOT CMAKE_OSX_SYSROOT) endif() set(CMAKE_C_STANDARD 11) -set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) diff --git a/include/helpers/endian.h b/include/helpers/endian.h index b9727ce4c7..85ae394cdc 100644 --- a/include/helpers/endian.h +++ b/include/helpers/endian.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include "dolphin/types.h" #include "dolphin/mtx.h" diff --git a/mods/custom_actor_demo/CMakeLists.txt b/mods/custom_actor_demo/CMakeLists.txt index d7e55536d4..78bf50c6d6 100644 --- a/mods/custom_actor_demo/CMakeLists.txt +++ b/mods/custom_actor_demo/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.25) project(custom_actor_demo CXX) -set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD 23) if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) set(DUSK_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../.." CACHE PATH "Path to dusk source root") diff --git a/src/dusk/mod_loader.hpp b/src/dusk/mod_loader.hpp index 3d5094ca70..e6ec8a106e 100644 --- a/src/dusk/mod_loader.hpp +++ b/src/dusk/mod_loader.hpp @@ -347,7 +347,9 @@ private: bool m_startupComplete = false; LoadedMod* try_load_mod(const std::filesystem::path& modPath, bool fromDir, - uint32_t searchDirIndex, std::unique_ptr bundle = {}); + uint32_t searchDirIndex); + LoadedMod* try_load_mod(const std::filesystem::path& modPath, bool fromDir, + uint32_t searchDirIndex, std::unique_ptr bundle); void load_native(LoadedMod& mod, const std::string& dllEntry, const std::vector& runtimeEntries); bool load_native_if_present(LoadedMod& mod); diff --git a/src/dusk/mods/loader/loader.cpp b/src/dusk/mods/loader/loader.cpp index 16e52f12da..0e6b0ab7b3 100644 --- a/src/dusk/mods/loader/loader.cpp +++ b/src/dusk/mods/loader/loader.cpp @@ -132,6 +132,9 @@ static void warn_unpublished_deferred_exports(const LoadedMod& mod) { } } } +LoadedMod* ModLoader::try_load_mod(const fs::path& modPath, bool fromDir, uint32_t searchDirIndex) { + return try_load_mod(modPath, fromDir, searchDirIndex, {}); +} LoadedMod* ModLoader::try_load_mod(const fs::path& modPath, bool fromDir, uint32_t searchDirIndex, std::unique_ptr bundle) {