From cc395ce340904e516ce263c0d484fd5eb8e37861 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Sat, 1 Mar 2025 15:49:38 +0100 Subject: [PATCH] Update C++ version to 23, add new warnings and the fix them --- apps/OpenSpace/ext/sgct | 2 +- ext/ghoul | 2 +- .../pointcloud/renderablepointcloud.cpp | 2 +- .../base/rendering/renderablenodearrow.cpp | 4 +- .../rendering/renderableplaneimageonline.cpp | 4 +- .../rendering/renderabletrailtrajectory.cpp | 2 +- .../base/rendering/screenspaceimageonline.cpp | 4 +- modules/globebrowsing/src/geodeticpatch.cpp | 2 +- modules/globebrowsing/src/geodeticpatch.h | 2 +- .../rendering/localtfbrickselector.cpp | 6 +-- .../rendering/shenbrickselector.cpp | 2 +- .../rendering/simpletfbrickselector.cpp | 6 +-- .../rendering/tfbrickselector.cpp | 6 +-- modules/skybrowser/src/browser.cpp | 2 +- modules/skybrowser/src/wwtdatahandler.cpp | 2 +- .../space/rendering/renderableeclipsecone.cpp | 2 +- .../rendering/renderableshadowcylinder.cpp | 2 +- modules/spout/screenspacespout.cpp | 16 ------- modules/sync/syncs/httpsynchronization.cpp | 2 +- modules/webbrowser/CMakeLists.txt | 11 ++++- .../webbrowser/cmake/webbrowser_helpers.cmake | 1 + modules/webbrowser/include/webbrowserapp.h | 24 ---------- modules/webbrowser/src/webrenderhandler.cpp | 2 +- src/engine/openspaceengine.cpp | 8 +--- src/scripting/scriptengine_lua.inl | 2 +- src/util/spicemanager.cpp | 4 +- .../set_openspace_compile_settings.cmake | 46 ++++++++++++++++++- support/coding/codegen | 2 +- 28 files changed, 89 insertions(+), 81 deletions(-) diff --git a/apps/OpenSpace/ext/sgct b/apps/OpenSpace/ext/sgct index 0713669107..35fa986062 160000 --- a/apps/OpenSpace/ext/sgct +++ b/apps/OpenSpace/ext/sgct @@ -1 +1 @@ -Subproject commit 0713669107747ea7669b2e98a95fed16990d8ee5 +Subproject commit 35fa9860620f6deea4c0fc6220d815ed4524bf37 diff --git a/ext/ghoul b/ext/ghoul index ea131fef1b..5e61410f45 160000 --- a/ext/ghoul +++ b/ext/ghoul @@ -1 +1 @@ -Subproject commit ea131fef1b4058668fae2c92786f31a38ff04906 +Subproject commit 5e61410f45f850498b4b5c39f6f135d96f6a1f89 diff --git a/modules/base/rendering/pointcloud/renderablepointcloud.cpp b/modules/base/rendering/pointcloud/renderablepointcloud.cpp index 4f4be5ff72..bba3f92ec3 100644 --- a/modules/base/rendering/pointcloud/renderablepointcloud.cpp +++ b/modules/base/rendering/pointcloud/renderablepointcloud.cpp @@ -796,7 +796,7 @@ RenderablePointCloud::RenderablePointCloud(const ghoul::Dictionary& dictionary) } bool RenderablePointCloud::isReady() const { - bool isReady = _program; + bool isReady = _program != nullptr; if (_hasLabels) { isReady = isReady && _labels->isReady(); } diff --git a/modules/base/rendering/renderablenodearrow.cpp b/modules/base/rendering/renderablenodearrow.cpp index d98907377b..25439c1f34 100644 --- a/modules/base/rendering/renderablenodearrow.cpp +++ b/modules/base/rendering/renderablenodearrow.cpp @@ -251,7 +251,7 @@ namespace { std::optional width [[codegen::greaterequal(0.f)]]; // [[codegen::verbatim(ShadingEnabledInfo.description)]] - std::optional performShading; + std::optional performShading; // [[codegen::verbatim(AmbientIntensityInfo.description)]] std::optional ambientIntensity [[codegen::greaterequal(0.f)]]; @@ -385,7 +385,7 @@ void RenderableNodeArrow::deinitializeGL() { } bool RenderableNodeArrow::isReady() const { - return _shaderProgram; + return _shaderProgram != nullptr; } void RenderableNodeArrow::updateShapeTransforms(const RenderData& data) { diff --git a/modules/base/rendering/renderableplaneimageonline.cpp b/modules/base/rendering/renderableplaneimageonline.cpp index 94adffe3c7..3f2a3ba048 100644 --- a/modules/base/rendering/renderableplaneimageonline.cpp +++ b/modules/base/rendering/renderableplaneimageonline.cpp @@ -195,13 +195,13 @@ RenderablePlaneImageOnline::downloadImageToMemory(const std::string& url) { return global::downloadManager->fetchFile( url, - [url](const DownloadManager::MemoryFile&) { + [](const DownloadManager::MemoryFile&) { LDEBUGC( "ScreenSpaceImageOnline", "Download to memory finished for screen space image" ); }, - [url](const std::string& err) { + [](const std::string& err) { LDEBUGC( "ScreenSpaceImageOnline", "Download to memory failer for screen space image: " + err diff --git a/modules/base/rendering/renderabletrailtrajectory.cpp b/modules/base/rendering/renderabletrailtrajectory.cpp index 95a3a8af2f..f0ae0f03e2 100644 --- a/modules/base/rendering/renderabletrailtrajectory.cpp +++ b/modules/base/rendering/renderabletrailtrajectory.cpp @@ -143,7 +143,7 @@ namespace { std::optional sweepChunkSize; // [[codegen::verbatim(SweepChunkSizeInfo.description)]] - std::optional enableSweepChunking; + std::optional enableSweepChunking; // [[codegen::verbatim(AccurateTrailPositionsInfo.description)]] std::optional accurateTrailPositions; diff --git a/modules/base/rendering/screenspaceimageonline.cpp b/modules/base/rendering/screenspaceimageonline.cpp index de650e697d..2d81beae43 100644 --- a/modules/base/rendering/screenspaceimageonline.cpp +++ b/modules/base/rendering/screenspaceimageonline.cpp @@ -152,10 +152,10 @@ std::future ScreenSpaceImageOnline::downloadImageTo { return global::downloadManager->fetchFile( url, - [url](const DownloadManager::MemoryFile&) { + [](const DownloadManager::MemoryFile&) { LDEBUG("Download to memory finished for screen space image"); }, - [url](const std::string& err) { + [](const std::string& err) { LDEBUG(std::format( "Download to memory failed for screen space image: {}", err )); diff --git a/modules/globebrowsing/src/geodeticpatch.cpp b/modules/globebrowsing/src/geodeticpatch.cpp index 1f0dd6fbf9..61b1392b31 100644 --- a/modules/globebrowsing/src/geodeticpatch.cpp +++ b/modules/globebrowsing/src/geodeticpatch.cpp @@ -142,7 +142,7 @@ double GeodeticPatch::edgeLatitudeNearestEquator() const { return _center.lat + _halfSize.lat * (isNorthern() ? -1.0 : 1.0); } -double GeodeticPatch::isNorthern() const { +bool GeodeticPatch::isNorthern() const { return _center.lat > 0.0; } diff --git a/modules/globebrowsing/src/geodeticpatch.h b/modules/globebrowsing/src/geodeticpatch.h index 581264b238..d859a06ec5 100644 --- a/modules/globebrowsing/src/geodeticpatch.h +++ b/modules/globebrowsing/src/geodeticpatch.h @@ -53,7 +53,7 @@ public: /** * Returns `true` if the center above the equator. */ - double isNorthern() const; + bool isNorthern() const; Geodetic2 corner(Quad q) const; diff --git a/modules/multiresvolume/rendering/localtfbrickselector.cpp b/modules/multiresvolume/rendering/localtfbrickselector.cpp index 35e5173db5..1265978247 100644 --- a/modules/multiresvolume/rendering/localtfbrickselector.cpp +++ b/modules/multiresvolume/rendering/localtfbrickselector.cpp @@ -177,9 +177,9 @@ void LocalTfBrickSelector::selectBricks(int timestep, std::vector& bricks) childSplitType ); BrickSelection childSelection = bs.splitSpatially( - i % 2, - (i/2) % 2, - i/4, + i % 2 != 0, + (i/2) % 2 != 0, + i/4 != 0, childBrickIndex, childSplitType, childSplitPoints diff --git a/modules/multiresvolume/rendering/shenbrickselector.cpp b/modules/multiresvolume/rendering/shenbrickselector.cpp index 0d90497ffd..4ff30c352a 100644 --- a/modules/multiresvolume/rendering/shenbrickselector.cpp +++ b/modules/multiresvolume/rendering/shenbrickselector.cpp @@ -59,7 +59,7 @@ void ShenBrickSelector::traverseOT(int timestep, unsigned int brickIndex, int numTimeSteps = _tsp->header().numTimesteps; for (unsigned int i = 0; i < 8; i++) { unsigned int child = firstChild + i; - BrickCover cover = coveredBricks.split(i % 2, (i/2) % 2, (i/4)); + BrickCover cover = coveredBricks.split(i % 2 != 0, (i/2) % 2 != 0, (i/4) != 0); selectBricks(timestep, child, child, 0, numTimeSteps, cover, bricks); } } diff --git a/modules/multiresvolume/rendering/simpletfbrickselector.cpp b/modules/multiresvolume/rendering/simpletfbrickselector.cpp index 4b0be588bd..245e8d4052 100644 --- a/modules/multiresvolume/rendering/simpletfbrickselector.cpp +++ b/modules/multiresvolume/rendering/simpletfbrickselector.cpp @@ -175,9 +175,9 @@ void SimpleTfBrickSelector::selectBricks(int timestep, std::vector& bricks) BrickSelection::SplitType childSplitType; float childSplitPoints = splitPoints(childBrickIndex, childSplitType); BrickSelection childSelection = bs.splitSpatially( - i % 2, - (i / 2) % 2, // abock: this is always 0? - i / 4, + i % 2 != 0, + (i / 2) % 2 != 0, // abock: this is always 0? + i / 4 != 0, childBrickIndex, childSplitType, childSplitPoints diff --git a/modules/multiresvolume/rendering/tfbrickselector.cpp b/modules/multiresvolume/rendering/tfbrickselector.cpp index b411fc07b3..22c2f3bcd8 100644 --- a/modules/multiresvolume/rendering/tfbrickselector.cpp +++ b/modules/multiresvolume/rendering/tfbrickselector.cpp @@ -187,9 +187,9 @@ void TfBrickSelector::selectBricks(int timestep, std::vector& bricks) { float childSplitPoints = splitPoints(childBrickIndex, childSplitType); //std::cout << "Splitting spatially" << std::endl; BrickSelection childSelection = bs.splitSpatially( - i % 2, - (i / 2) % 2, // abock: isn't this always 0? - i / 4, + i % 2 != 0, + (i / 2) % 2 != 0, // abock: isn't this always 0? + i / 4 != 0, childBrickIndex, childSplitType, childSplitPoints diff --git a/modules/skybrowser/src/browser.cpp b/modules/skybrowser/src/browser.cpp index 33f52cbd06..076260785a 100644 --- a/modules/skybrowser/src/browser.cpp +++ b/modules/skybrowser/src/browser.cpp @@ -178,7 +178,7 @@ void Browser::update() { } bool Browser::isReady() const { - return _texture.get(); + return _texture != nullptr; } // Updates the browser size to match the size of the texture diff --git a/modules/skybrowser/src/wwtdatahandler.cpp b/modules/skybrowser/src/wwtdatahandler.cpp index f094c264a8..25d2c41deb 100644 --- a/modules/skybrowser/src/wwtdatahandler.cpp +++ b/modules/skybrowser/src/wwtdatahandler.cpp @@ -51,7 +51,7 @@ namespace { bool hasAttribute(const tinyxml2::XMLElement* element, std::string_view name) { const std::string n = std::string(name); - return element->FindAttribute(n.c_str()); + return element->FindAttribute(n.c_str()) != nullptr; } std::string attribute(const tinyxml2::XMLElement* element, std::string_view name) { diff --git a/modules/space/rendering/renderableeclipsecone.cpp b/modules/space/rendering/renderableeclipsecone.cpp index 6630e2b547..ae0c2db6a2 100644 --- a/modules/space/rendering/renderableeclipsecone.cpp +++ b/modules/space/rendering/renderableeclipsecone.cpp @@ -290,7 +290,7 @@ void RenderableEclipseCone::deinitializeGL() { } bool RenderableEclipseCone::isReady() const { - return _shader; + return _shader != nullptr; } void RenderableEclipseCone::render(const RenderData& data, RendererTasks&) { diff --git a/modules/spacecraftinstruments/rendering/renderableshadowcylinder.cpp b/modules/spacecraftinstruments/rendering/renderableshadowcylinder.cpp index bc9764f25e..3d05eb20b7 100644 --- a/modules/spacecraftinstruments/rendering/renderableshadowcylinder.cpp +++ b/modules/spacecraftinstruments/rendering/renderableshadowcylinder.cpp @@ -257,7 +257,7 @@ void RenderableShadowCylinder::deinitializeGL() { } bool RenderableShadowCylinder::isReady() const { - return _shader; + return _shader != nullptr; } void RenderableShadowCylinder::render(const RenderData& data, RendererTasks&) { diff --git a/modules/spout/screenspacespout.cpp b/modules/spout/screenspacespout.cpp index f7ecd690e0..16e5e89fb7 100644 --- a/modules/spout/screenspacespout.cpp +++ b/modules/spout/screenspacespout.cpp @@ -40,22 +40,6 @@ namespace { openspace::properties::Property::Visibility::AdvancedUser }; - constexpr openspace::properties::Property::PropertyInfo SelectionInfo = { - "SpoutSelection", - "Spout Selection", - "This property displays all available Spout sender on the system. If one them is " - "selected, its value is stored in the 'SpoutName' property, overwriting its " - "previous value.", - openspace::properties::Property::Visibility::AdvancedUser - }; - - constexpr openspace::properties::Property::PropertyInfo UpdateInfo = { - "UpdateSelection", - "Update Selection", - "If this property is trigged, the 'SpoutSelection' options will be refreshed.", - openspace::properties::Property::Visibility::AdvancedUser - }; - struct [[codegen::Dictionary(ScreenSpaceSpout)]] Parameters { // [[codegen::verbatim(NameInfo.description)]] std::optional spoutName; diff --git a/modules/sync/syncs/httpsynchronization.cpp b/modules/sync/syncs/httpsynchronization.cpp index 9b866fa25f..054f937466 100644 --- a/modules/sync/syncs/httpsynchronization.cpp +++ b/modules/sync/syncs/httpsynchronization.cpp @@ -402,7 +402,7 @@ HttpSynchronization::trySyncFromUrl(std::string url) { originalName.replace_extension().string(); struct zip_t* z = zip_open(source.c_str(), 0, 'r'); - const bool is64 = zip_is64(z); + const bool is64 = zip_is64(z) == 1; zip_close(z); if (is64) { diff --git a/modules/webbrowser/CMakeLists.txt b/modules/webbrowser/CMakeLists.txt index f9407265ee..fac4e9a432 100644 --- a/modules/webbrowser/CMakeLists.txt +++ b/modules/webbrowser/CMakeLists.txt @@ -90,7 +90,9 @@ add_subdirectory(${CEF_LIBCEF_DLL_WRAPPER_PATH} libcef_dll_wrapper SYSTEM) mark_as_advanced(CEF_DEBUG_INFO_FLAG USE_ATL USE_OFFICIAL_BUILD_SANDBOX USE_SANDBOX) -if (UNIX) +if (WIN32) + target_compile_options(libcef_dll_wrapper PRIVATE "/W0") +elseif (UNIX) target_compile_options(libcef_dll_wrapper PRIVATE "-w") endif () @@ -207,6 +209,13 @@ else() message(STATUS "Setting up WebBrowser CEF helper executable: ${CEF_HELPER_TARGET}") set_openspace_cef_target_out_dir() add_executable(${CEF_HELPER_TARGET} ${WEBBROWSER_HELPER_SOURCES}) + + if (WIN32) + target_compile_options(${CEF_HELPER_TARGET} PRIVATE "/W0") + elseif (UNIX) + target_compile_options(${CEF_HELPER_TARGET} PRIVATE "-w") + endif () + set_executable_target_properties(${CEF_HELPER_TARGET}) add_dependencies(${CEF_HELPER_TARGET} libcef_dll_wrapper) # Logical target used to link the libcef library. diff --git a/modules/webbrowser/cmake/webbrowser_helpers.cmake b/modules/webbrowser/cmake/webbrowser_helpers.cmake index 19cb305197..36c6bd36bb 100644 --- a/modules/webbrowser/cmake/webbrowser_helpers.cmake +++ b/modules/webbrowser/cmake/webbrowser_helpers.cmake @@ -124,6 +124,7 @@ function(run_cef_windows_config CEF_TARGET CEF_ROOT MODULE_PATH) # Executable target. add_dependencies(${CEF_TARGET} libcef_dll_wrapper) target_link_libraries(${CEF_TARGET} PUBLIC libcef_lib libcef_dll_wrapper ${CEF_STANDARD_LIBS}) + include_directories(${CEF_ROOT}) add_dependencies(${CEF_TARGET} libcef_dll_wrapper "${CEF_HELPER_TARGET}") diff --git a/modules/webbrowser/include/webbrowserapp.h b/modules/webbrowser/include/webbrowserapp.h index 5b55e93a1d..a87bb9c20e 100644 --- a/modules/webbrowser/include/webbrowserapp.h +++ b/modules/webbrowser/include/webbrowserapp.h @@ -25,33 +25,9 @@ #ifndef __OPENSPACE_MODULE_WEBBROWSER___WEBBROWSERAPP___H__ #define __OPENSPACE_MODULE_WEBBROWSER___WEBBROWSERAPP___H__ -#ifdef _MSC_VER -#pragma warning (push) -#pragma warning (disable : 4100) -#elif defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments" -#pragma clang diagnostic ignored "-Wunused-parameter" -#pragma clang diagnostic ignored "-Wshadow-field" -#pragma clang diagnostic ignored "-Wcomma" -#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" -#elif defined(__GNUC__) || defined(__GNUG__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wshadow" -#endif - #include #include -#ifdef _MSC_VER -#pragma warning (pop) -#elif defined(__clang__) -#pragma clang diagnostic pop -#elif defined(__GNUC__) || defined(__GNUG__) -#pragma GCC diagnostic pop -#endif - - namespace openspace { /** diff --git a/modules/webbrowser/src/webrenderhandler.cpp b/modules/webbrowser/src/webrenderhandler.cpp index 8b6c2f010c..7bca0b334b 100644 --- a/modules/webbrowser/src/webrenderhandler.cpp +++ b/modules/webbrowser/src/webrenderhandler.cpp @@ -289,7 +289,7 @@ bool WebRenderHandler::hasContent(int x, int y) { } int index = x + _browserBufferSize.x * (_browserBufferSize.y - y - 1); index = glm::clamp(index, 0, static_cast(_browserBuffer.size() - 1)); - return _browserBuffer[index].a; + return _browserBuffer[index].a != 0; } } diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index d4cbc1957f..298d225aa3 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -1036,13 +1036,7 @@ void OpenSpaceEngine::loadFonts() { } LDEBUG(std::format("Registering font '{}' with key '{}'", fontName, key)); - const bool success = global::fontManager->registerFontPath(key, fontName); - - if (!success) { - LERROR(std::format( - "Error registering font '{}' with key '{}'", fontName, key - )); - } + global::fontManager->registerFontPath(key, fontName); } try { diff --git a/src/scripting/scriptengine_lua.inl b/src/scripting/scriptengine_lua.inl index eb56178cdf..699823fd6a 100644 --- a/src/scripting/scriptengine_lua.inl +++ b/src/scripting/scriptengine_lua.inl @@ -242,7 +242,7 @@ namespace { } struct zip_t* z = zip_open(source.c_str(), 0, 'r'); - const bool is64 = zip_is64(z); + const bool is64 = zip_is64(z) == 1; zip_close(z); if (is64) { diff --git a/src/util/spicemanager.cpp b/src/util/spicemanager.cpp index 2af6dbb3b5..03218e8f3e 100644 --- a/src/util/spicemanager.cpp +++ b/src/util/spicemanager.cpp @@ -485,7 +485,7 @@ std::vector> SpiceManager::spiceBodies( } bool SpiceManager::hasValue(int naifId, const std::string& item) const { - return bodfnd_c(naifId, item.c_str()); + return bodfnd_c(naifId, item.c_str()) == SPICETRUE; } bool SpiceManager::hasValue(const std::string& body, const std::string& item) const { @@ -515,7 +515,7 @@ bool SpiceManager::hasNaifId(const std::string& body) const { SpiceInt id = 0; bods2c_c(body.c_str(), &id, &success); reset_c(); - return success; + return success == SPICETRUE; } int SpiceManager::frameId(const std::string& frame) const { diff --git a/support/cmake/set_openspace_compile_settings.cmake b/support/cmake/set_openspace_compile_settings.cmake index a2c1dc4db8..98c613b186 100644 --- a/support/cmake/set_openspace_compile_settings.cmake +++ b/support/cmake/set_openspace_compile_settings.cmake @@ -23,16 +23,60 @@ ########################################################################################## function (set_openspace_compile_settings target) - target_compile_features(${target} PUBLIC cxx_std_20) + target_compile_features(${target} PUBLIC cxx_std_23) set(MSVC_WARNINGS "/MP" # Multi-threading support "/W4" # Highest warning level "/w44062" # missing case label + "/w44165" # 'HRESULT' is being converted to 'bool' + "/w44242" # conversion from 'type1' to 'type2', possible loss of data + "/w44254" # conversion from 'type1' to 'type2', possible loss of data + "/w44263" # member function does not override any base class virtual member function + "/w44265" # class has virtual functions, but destructor is not virtual + "/w44287" # unsigned/negative constant mismatch "/w44289" # using for-loop variable outside of loop "/w44296" # expression is always true/false + "/w44437" # dynamic_cast could fail in some contexts + "/w44545" # expression before comma evaluates to a function missing an argument list + "/w44547" # operator before comma has no effect + "/w44548" # operator before comma has no effect + "/w44549" # operator before comma has no effect + "/w44555" # expression has no effect; expected expression with side-effect + "/w44574" # 'identifier' is defined to be '0': did you mean to use '#if identifier'? + "/w44619" # #pragma warning: there is no warning number 'number' + "/w44643" # Forward declaring 'identifier' in namespace std is not permitted + "/w44800" # Implicit conversion from 'type' to bool. Possible information loss + "/w44822" # local class member function does not have a body + "/w44841" # non-standard extension used: compound member designator used in offsetof + "/w44842" # the result of 'offsetof' applied to a type using multiple inheritance is + # not guaranteed to be consistent between compiler releases + "/w44946" # reinterpret_cast used between related classes: 'class1' and 'class2' + "/w44986" # exception specification does not match previous declaration + "/w44987" # nonstandard extension used: 'throw (...)' + "/w45022" # multiple move constructors specified + "/w45023" # multiple move assignment operators specified + "/w45031" # #pragma warning(pop): likely mismatch, popping warning state pushed in + # different file + "/w45032" # detected #pragma warning(push) with no #pragma warning(pop) + "/w45038" # data member 'member1' will be initialized after data member 'member2' "/w45041" # out-of-line definition for constexpr data is deprecated + "/w45042" # function declarations at block scope cannot be specified 'inline' "/w45204" # virtual class has non-virtual trivial destructor + "/w45233" # explicit lambda capture 'identifier' is not used + "/w45340" # attribute is ignored in this syntactic position + "/w45243" # using incomplete class 'class-name' can cause potential one definition + # rule violation due to ABI limitation + "/w45245" # unreferenced function with internal linkage has been removed + "/w45249" # 'bitfield' of type 'enumeration_name' has named enumerators with values + # that cannot be represented in the given bit field width of + # 'bitfield_width'. + "/w45258" # explicit capture of 'symbol' is not required for this use + "/w45259" # explicit specialization requires 'template <>' + "/w45262" # implicit fall-through occurs here + "/w45263" # calling 'std::move' on a temporary object prevents copy elision + "/w45264" # 'const' variable is not used + "/w45266" # 'const' qualifier on return type has no effect "/wd4127" # conditional expression is constant [raised by: websocketpp] "/wd4201" # nonstandard extension used : nameless struct/union [raised by: GLM] "/wd5030" # attribute 'attribute' is not recognized [raised by: codegen] diff --git a/support/coding/codegen b/support/coding/codegen index b2af1bef7e..83239bacae 160000 --- a/support/coding/codegen +++ b/support/coding/codegen @@ -1 +1 @@ -Subproject commit b2af1bef7e9a3f59b98097e372cfcba2e6bf3303 +Subproject commit 83239bacae73119928ee68daf144775eae3024f8