diff --git a/libs/openFrameworksCompiled/project/macos/CoreOF.xcconfig b/libs/openFrameworksCompiled/project/macos/CoreOF.xcconfig
index d2389a38f4a..6c23d96d899 100644
--- a/libs/openFrameworksCompiled/project/macos/CoreOF.xcconfig
+++ b/libs/openFrameworksCompiled/project/macos/CoreOF.xcconfig
@@ -1,7 +1,8 @@
// define which C++ library is required to build, based on target architecture
CLANG_CXX_LIBRARY = libc++
CLANG_ENABLE_OBJC_ARC = YES
-CLANG_CXX_LANGUAGE_STANDARD = c++17
+CLANG_CXX_LANGUAGE_STANDARD = c++23
+CLANG_C_LANGUAGE_STANDARD = c17
MACOSX_DEPLOYMENT_TARGET = 10.15
MISC_FLAGS = "-ObjC"
@@ -50,7 +51,7 @@ OF_CORE_LIBS = $(MISC_FLAGS)
OF_CORE_HEADERS = $(HEADER_OF) $(HEADER_FREEIMAGE) $(HEADER_UTF8) $(HEADER_JSON) $(HEADER_GLM) $(HEADER_TESS2) $(HEADER_CAIRO) $(HEADER_RTAUDIO) $(HEADER_GLFW) $(HEADER_FREETYPE) $(HEADER_FREETYPE2) $(HEADER_CURL) $(HEADER_URIPARSER) $(HEADER_PUGIXML) $(HEADER_GLEW) $(HEADER_CURL) $(HEADER_OPENSSL) $(HEADER_BROTLI)
-OF_CORE_FRAMEWORKS = -framework Accelerate -framework AGL -framework AppKit -framework ApplicationServices -framework AudioToolbox -framework AVFoundation -framework Cocoa -framework CoreAudio -framework CoreFoundation -framework CoreMedia -framework CoreServices -framework CoreVideo -framework IOKit -framework OpenGL -framework QuartzCore -framework Security -framework CFNetwork
+OF_CORE_FRAMEWORKS = -framework Accelerate -framework AppKit -framework ApplicationServices -framework AudioToolbox -framework AVFoundation -framework Cocoa -framework CoreAudio -framework CoreFoundation -framework CoreMedia -framework CoreServices -framework CoreVideo -framework Foundation -framework IOKit -framework OpenGL -framework QuartzCore -framework Security -framework CFNetwork -framework SystemConfiguration -framework Metal
//-framework AudioToolbox -framework Accelerate -framework AVFoundation -framework CoreAudio -framework CoreGraphics -framework CoreLocation -framework CoreMotion -framework CoreMedia -framework CoreVideo -framework Foundation -framework GameController -framework GLKit -framework MapKit -framework OpenAL -framework OpenGLES -framework UIKit -framework Security -framework QuartzCore -framework CoreHaptics
//
diff --git a/libs/openFrameworksCompiled/project/macos/config.macos.default.mk b/libs/openFrameworksCompiled/project/macos/config.macos.default.mk
index c6a9eebaf9d..f19c20b19b6 100644
--- a/libs/openFrameworksCompiled/project/macos/config.macos.default.mk
+++ b/libs/openFrameworksCompiled/project/macos/config.macos.default.mk
@@ -82,7 +82,12 @@ ifndef MAC_OS_C_VER
endif
ifndef MAC_OS_CPP_VER
- MAC_OS_CPP_VER = -std=c++2b
+ # Prefer ISO C++23. Apple Clang 15 from the command line only accepts the draft alias c++2b.
+ ifeq ($(shell echo 'int main(){return 0;}' | xcrun clang++ -std=c++23 -x c++ - -fsyntax-only >/dev/null 2>&1; echo $$?),0)
+ MAC_OS_CPP_VER = -std=c++23
+ else
+ MAC_OS_CPP_VER = -std=c++2b
+ endif
endif
# Link against libstdc++ to silence tr1/memory errors on latest versions of osx
diff --git a/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj b/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj
index 1b8e80156e3..073bd086f0d 100644
--- a/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj
+++ b/libs/openFrameworksCompiled/project/macos/openFrameworksLib.xcodeproj/project.pbxproj
@@ -2062,7 +2062,8 @@
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "c++17";
+ CLANG_CXX_LANGUAGE_STANDARD = "c++23";
+ CLANG_C_LANGUAGE_STANDARD = c17;
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
@@ -2179,7 +2180,8 @@
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "c++17";
+ CLANG_CXX_LANGUAGE_STANDARD = "c++23";
+ CLANG_C_LANGUAGE_STANDARD = c17;
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
diff --git a/libs/openFrameworksCompiled/project/osx/config.osx.default.mk b/libs/openFrameworksCompiled/project/osx/config.osx.default.mk
index c3aa625eb6c..84da19082a1 100644
--- a/libs/openFrameworksCompiled/project/osx/config.osx.default.mk
+++ b/libs/openFrameworksCompiled/project/osx/config.osx.default.mk
@@ -82,7 +82,12 @@ ifndef MAC_OS_C_VER
endif
ifndef MAC_OS_CPP_VER
- MAC_OS_CPP_VER = -std=c++2b
+ # Prefer ISO C++23. Apple Clang 15 from the command line only accepts the draft alias c++2b.
+ ifeq ($(shell echo 'int main(){return 0;}' | xcrun clang++ -std=c++23 -x c++ - -fsyntax-only >/dev/null 2>&1; echo $$?),0)
+ MAC_OS_CPP_VER = -std=c++23
+ else
+ MAC_OS_CPP_VER = -std=c++2b
+ endif
endif
# Link against libstdc++ to silence tr1/memory errors on latest versions of osx
diff --git a/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig b/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig
index 83f4ddc762c..8515895bcfb 100644
--- a/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig
+++ b/libs/openFrameworksCompiled/project/tvOS/CoreOF.xcconfig
@@ -1,7 +1,8 @@
// once all libraries are compiled for libc++ / all architectures
CLANG_CXX_LIBRARY = libc++
CLANG_ENABLE_OBJC_ARC = YES
-CLANG_CXX_LANGUAGE_STANDARD = c++17
+CLANG_CXX_LANGUAGE_STANDARD = c++23
+CLANG_C_LANGUAGE_STANDARD = c17
TVOS_DEPLOYMENT_TARGET = 15.0
OF_USING_STD_FS = YES
diff --git a/libs/openFrameworksCompiled/project/vs/openFrameworksCommon.props b/libs/openFrameworksCompiled/project/vs/openFrameworksCommon.props
index 90494c5baaa..7d686f659c8 100644
--- a/libs/openFrameworksCompiled/project/vs/openFrameworksCommon.props
+++ b/libs/openFrameworksCompiled/project/vs/openFrameworksCommon.props
@@ -11,12 +11,9 @@
%(AdditionalLibraryDirectories)
- stdcpplatest
-
-
+ stdcpp23
+ stdc17
CompileAsCpp
-
-
/Zc:__cplusplus %(AdditionalOptions)
diff --git a/libs/openFrameworksCompiled/project/vs/openframeworksLib.vcxproj b/libs/openFrameworksCompiled/project/vs/openframeworksLib.vcxproj
index 66deb3a46fe..cf5d503af40 100644
--- a/libs/openFrameworksCompiled/project/vs/openframeworksLib.vcxproj
+++ b/libs/openFrameworksCompiled/project/vs/openframeworksLib.vcxproj
@@ -86,12 +86,10 @@
Level1
false
CompileAsCpp
- stdcpplatest
+
/Zc:__cplusplus %(AdditionalOptions)
false
- stdc17
- stdc17
- stdc17
+
true
true
true
@@ -129,9 +127,9 @@
MultiThreadedDLL
Level1
true
- stdcpplatest
+
/Zc:__cplusplus %(AdditionalOptions)
- stdc17
+
false
true
true
diff --git a/libs/openFrameworksCompiled/project/vs2019/openFrameworksCommon.props b/libs/openFrameworksCompiled/project/vs2019/openFrameworksCommon.props
index cf1fc10e4d8..06185a2e8a7 100644
--- a/libs/openFrameworksCompiled/project/vs2019/openFrameworksCommon.props
+++ b/libs/openFrameworksCompiled/project/vs2019/openFrameworksCommon.props
@@ -12,11 +12,8 @@
stdcpp17
-
-
+ stdc17
CompileAsCpp
-
-
/Zc:__cplusplus %(AdditionalOptions)
diff --git a/libs/openFrameworksCompiled/project/vs2019/openframeworksLib.vcxproj b/libs/openFrameworksCompiled/project/vs2019/openframeworksLib.vcxproj
index 43628f2f131..6a48501a3da 100644
--- a/libs/openFrameworksCompiled/project/vs2019/openframeworksLib.vcxproj
+++ b/libs/openFrameworksCompiled/project/vs2019/openframeworksLib.vcxproj
@@ -83,12 +83,10 @@
Level3
false
CompileAsCpp
- stdcpplatest
+
/Zc:__cplusplus %(AdditionalOptions)
false
- stdc17
- stdc17
- stdc17
+
true
true
true
@@ -124,9 +122,9 @@
MultiThreadedDLL
Level1
true
- stdcpplatest
+
/Zc:__cplusplus %(AdditionalOptions)
- stdc17
+
false
true
true
diff --git a/libs/openFrameworksCompiled/project/vs2026/openFrameworksCommon.props b/libs/openFrameworksCompiled/project/vs2026/openFrameworksCommon.props
index 90494c5baaa..7d686f659c8 100644
--- a/libs/openFrameworksCompiled/project/vs2026/openFrameworksCommon.props
+++ b/libs/openFrameworksCompiled/project/vs2026/openFrameworksCommon.props
@@ -11,12 +11,9 @@
%(AdditionalLibraryDirectories)
- stdcpplatest
-
-
+ stdcpp23
+ stdc17
CompileAsCpp
-
-
/Zc:__cplusplus %(AdditionalOptions)
diff --git a/libs/openFrameworksCompiled/project/vs2026/openframeworksLib.vcxproj b/libs/openFrameworksCompiled/project/vs2026/openframeworksLib.vcxproj
index 20309013719..5e2dbc6051f 100644
--- a/libs/openFrameworksCompiled/project/vs2026/openframeworksLib.vcxproj
+++ b/libs/openFrameworksCompiled/project/vs2026/openframeworksLib.vcxproj
@@ -83,12 +83,10 @@
Level1
false
CompileAsCpp
- stdcpplatest
+
/Zc:__cplusplus %(AdditionalOptions)
false
- stdc17
- stdc17
- stdc17
+
true
true
true
@@ -126,9 +124,9 @@
MultiThreadedDLL
Level3
true
- stdcpplatest
+
/Zc:__cplusplus %(AdditionalOptions)
- stdc17
+
false
true
true
diff --git a/scripts/templates/macos/Project.xcconfig b/scripts/templates/macos/Project.xcconfig
index 4dc5ec5b058..31213ac6bbc 100644
--- a/scripts/templates/macos/Project.xcconfig
+++ b/scripts/templates/macos/Project.xcconfig
@@ -5,8 +5,8 @@ OF_PATH = ../../..
//THIS HAS ALL THE HEADER AND LIBS FOR OF CORE
#include "../../../libs/openFrameworksCompiled/project/macos/CoreOF.xcconfig"
-//UNCOMMENT BELOW TO ENABLE C++ 17 and std::filesystem
-CLANG_CXX_LANGUAGE_STANDARD = c++17
+CLANG_CXX_LANGUAGE_STANDARD = c++23
+CLANG_C_LANGUAGE_STANDARD = c17
MACOSX_DEPLOYMENT_TARGET = 10.15
// App Settings
diff --git a/scripts/templates/macos/config.make b/scripts/templates/macos/config.make
index 77a8465d1ce..66b58dd070a 100644
--- a/scripts/templates/macos/config.make
+++ b/scripts/templates/macos/config.make
@@ -143,6 +143,6 @@
# macos template
-# Uncomment/comment below to switch between C++11 and C++17 ( or newer ). On macOS C++17 needs 10.15 or above.
+# Default is C++23 (falls back to c++2b on older Apple Clang). Uncomment to override.
# export MAC_OS_MIN_VERSION = 10.15
-# export MAC_OS_CPP_VER = -std=c++17
+# export MAC_OS_CPP_VER = -std=c++23
diff --git a/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj b/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj
index 0f8d71591a2..65e567314da 100644
--- a/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj
+++ b/scripts/templates/macos/emptyExample.xcodeproj/project.pbxproj
@@ -378,7 +378,7 @@
"PRODUCT_NAME": "$(TARGET_NAME)",
"SUPPORTED_PLATFORMS": "appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator",
"GCC_WARN_64_TO_32_BIT_CONVERSION": "YES",
- "CLANG_CXX_LANGUAGE_STANDARD": "c++20",
+ "CLANG_CXX_LANGUAGE_STANDARD": "c++23",
"GCC_DYNAMIC_NO_PIC": "NO",
"CLANG_WARN__DUPLICATE_METHOD_MATCH": "YES",
"DEBUG_INFORMATION_FORMAT": "dwarf",
@@ -945,7 +945,7 @@
"PRODUCT_NAME": "$(TARGET_NAME)",
"SUPPORTED_PLATFORMS": "appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator",
"GCC_WARN_64_TO_32_BIT_CONVERSION": "YES",
- "CLANG_CXX_LANGUAGE_STANDARD": "c++20",
+ "CLANG_CXX_LANGUAGE_STANDARD": "c++23",
"LOCALIZATION_PREFERS_STRING_CATALOGS": "YES",
"CLANG_WARN__DUPLICATE_METHOD_MATCH": "YES",
"DEBUG_INFORMATION_FORMAT": "dwarf-with-dsym",
diff --git a/scripts/templates/osx/config.make b/scripts/templates/osx/config.make
index 8e653ed6848..555164918ae 100644
--- a/scripts/templates/osx/config.make
+++ b/scripts/templates/osx/config.make
@@ -143,6 +143,6 @@
# osx template
-# Uncomment/comment below to switch between C++11 and C++17 ( or newer ). On macOS C++17 needs 10.15 or above.
+# Default is C++23 (falls back to c++2b on older Apple Clang). Uncomment to override.
# export MAC_OS_MIN_VERSION = 10.15
-# export MAC_OS_CPP_VER = -std=c++17
+# export MAC_OS_CPP_VER = -std=c++23
diff --git a/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj b/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj
index 323f658aa31..03a1eba406e 100644
--- a/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj
+++ b/scripts/templates/tvOS/emptyExample.xcodeproj/project.pbxproj
@@ -163,7 +163,7 @@
"GCC_WARN_ABOUT_RETURN_TYPE": "YES_ERROR",
"GCC_WARN_UNDECLARED_SELECTOR": "YES",
"CLANG_ENABLE_MODULES": "YES",
- "CLANG_CXX_LANGUAGE_STANDARD": "c++17",
+ "CLANG_CXX_LANGUAGE_STANDARD": "c++23",
"GCC_NO_COMMON_BLOCKS": "YES",
"GCC_WARN_UNINITIALIZED_AUTOS": "YES_AGGRESSIVE",
"CLANG_WARN_INT_CONVERSION": "YES",
@@ -208,7 +208,7 @@
"DEVELOPMENT_TEAM": "",
"LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER": "NO",
"INFOPLIST_FILE": "ofxtvOS-Info.plist",
- "CLANG_CXX_LANGUAGE_STANDARD": "c++17",
+ "CLANG_CXX_LANGUAGE_STANDARD": "c++23",
"TVOS_DEPLOYMENT_TARGET": "17.2",
"HEADER_SEARCH_PATHS": "$(OF_CORE_HEADERS)",
"PRODUCT_NAME": "$(TARGET_NAME)",
@@ -609,7 +609,7 @@
"CLANG_WARN_DIRECT_OBJC_ISA_USAGE": "YES_ERROR",
"CLANG_WARN__DUPLICATE_METHOD_MATCH": "YES",
"SDKROOT": "appletvos",
- "CLANG_CXX_LANGUAGE_STANDARD": "c++17",
+ "CLANG_CXX_LANGUAGE_STANDARD": "c++23",
"ENABLE_TESTABILITY": "YES",
"CLANG_WARN_BOOL_CONVERSION": "YES",
"CLANG_WARN_UNREACHABLE_CODE": "YES",
@@ -654,7 +654,7 @@
"DEVELOPMENT_TEAM": "",
"LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER": "NO",
"INFOPLIST_FILE": "ofxtvOS-Info.plist",
- "CLANG_CXX_LANGUAGE_STANDARD": "c++17",
+ "CLANG_CXX_LANGUAGE_STANDARD": "c++23",
"TVOS_DEPLOYMENT_TARGET": "17.2",
"HEADER_SEARCH_PATHS": "$(OF_CORE_HEADERS)",
"PRODUCT_NAME": "$(TARGET_NAME)",
diff --git a/scripts/templates/vs/emptyExample.vcxproj b/scripts/templates/vs/emptyExample.vcxproj
index 3168c17f9fb..643f23a1289 100644
--- a/scripts/templates/vs/emptyExample.vcxproj
+++ b/scripts/templates/vs/emptyExample.vcxproj
@@ -85,7 +85,6 @@
%(AdditionalIncludeDirectories)
CompileAsCpp
true
- stdcpp23
/Zc:__cplusplus %(AdditionalOptions)
@@ -129,7 +128,6 @@
Level3
%(AdditionalIncludeDirectories)
CompileAsCpp
- stdcpplatest
/Zc:__cplusplus %(AdditionalOptions)
@@ -181,12 +179,12 @@
- stdc17
+
true
OldStyle
- stdc17
+
true
OldStyle
@@ -198,12 +196,12 @@
- stdc17
+
true
OldStyle
- stdc17
+
true
OldStyle
@@ -215,12 +213,12 @@
- stdc17
+
true
OldStyle
- stdc17
+
true
OldStyle
diff --git a/scripts/templates/vs2019/emptyExample.vcxproj b/scripts/templates/vs2019/emptyExample.vcxproj
index 667c101ba3b..d648bf7458b 100644
--- a/scripts/templates/vs2019/emptyExample.vcxproj
+++ b/scripts/templates/vs2019/emptyExample.vcxproj
@@ -85,7 +85,7 @@
%(AdditionalIncludeDirectories)
CompileAsCpp
true
- stdcpplatest
+
/Zc:__cplusplus %(AdditionalOptions)
@@ -129,7 +129,7 @@
Level3
%(AdditionalIncludeDirectories)
CompileAsCpp
- stdcpplatest
+
/Zc:__cplusplus %(AdditionalOptions)
@@ -181,12 +181,12 @@
- stdc17
+
true
OldStyle
- stdc17
+
true
OldStyle
@@ -198,12 +198,12 @@
- stdc17
+
true
OldStyle
- stdc17
+
true
OldStyle
@@ -215,12 +215,12 @@
- stdc17
+
true
OldStyle
- stdc17
+
true
OldStyle
diff --git a/scripts/templates/vs2026/emptyExample.vcxproj b/scripts/templates/vs2026/emptyExample.vcxproj
index a6958fd6a86..e028c737a9d 100644
--- a/scripts/templates/vs2026/emptyExample.vcxproj
+++ b/scripts/templates/vs2026/emptyExample.vcxproj
@@ -85,7 +85,7 @@
%(AdditionalIncludeDirectories)
CompileAsCpp
true
- stdcpplatest
+
/Zc:__cplusplus %(AdditionalOptions)
@@ -129,7 +129,7 @@
Level3
%(AdditionalIncludeDirectories)
CompileAsCpp
- stdcpplatest
+
/Zc:__cplusplus %(AdditionalOptions)
@@ -181,12 +181,12 @@
- stdc17
+
true
OldStyle
- stdc17
+
true
OldStyle
@@ -198,12 +198,12 @@
- stdc17
+
true
OldStyle
- stdc17
+
true
OldStyle
@@ -215,12 +215,12 @@
- stdc17
+
true
OldStyle
- stdc17
+
true
OldStyle