[us-commits] [ehb54/ultrascan3] 22f5fb: somo/grpy: build the module under C++11, and test ...
emre brookes
noreply at github.com
Tue Aug 18 10:35:57 MDT 2026
Branch: refs/heads/ehb54-issue-1016-somo-merge-2
Home: https://github.com/ehb54/ultrascan3
Commit: 22f5fbbfeccad48466fb20aa2b3af2b5b9cb9a1b
https://github.com/ehb54/ultrascan3/commit/22f5fbbfeccad48466fb20aa2b3af2b5b9cb9a1b
Author: ehb54 <brookes at uthscsa.edu>
Date: 2026-08-18 (Tue, 18 Aug 2026)
Changed paths:
M us_somo/develop/grpy/grpy_shell.hpp
M us_somo/develop/grpy/tests/run.sh
Log Message:
-----------
somo/grpy: build the module under C++11, and test it at that standard
SOMO supports Qt5 as well as Qt6, so it has to build under the older
compilers Qt5 is used with, and nothing in its build raises the language
standard. The grpy module did not honour that:
grpy/grpy_shell.hpp: error: no viable overloaded '='
note: cannot convert initializer list argument to
'grpy::ShellReport::Provenance'
ShellReport::Provenance carries default member initializers, which makes it a
non-aggregate before C++14, so the braced assignment
rep.prov[ m ] = { ri.ok, ri.clamped_low, ... };
is not valid C++11. It is now assigned field by field. The initializers stay:
prov is filled by assign() and they are what make an untouched entry read
false/nullptr rather than indeterminate.
That was the only C++11 violation in the module -- grpy_shell, grpy_exposure,
grpy_types and grpy_process all compile clean at -std=gnu++11, as do both
test programs.
The reason it survived is the second half of this commit. grpy/tests/run.sh
compiled the module at -std=c++17, a HIGHER standard than the product it
ships in, so every test passed on code the Qt5 build would not accept.
Testing above the product's standard hides breakage instead of finding it.
run.sh now uses -std=gnu++11, to be raised when SOMO's own standard moves --
which is a question for the Qt6 migration, not for this module.
Compilers new enough to default to gnu++17 (the CI containers) built it
either way, which is why CI stayed green; the Qt5 macOS build did not.
Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
Commit: d37eeb1678b8a4eba616a47c465ea4ce743ddc08
https://github.com/ehb54/ultrascan3/commit/d37eeb1678b8a4eba616a47c465ea4ce743ddc08
Author: ehb54 <brookes at uthscsa.edu>
Date: 2026-08-18 (Tue, 18 Aug 2026)
Changed paths:
M us_somo/develop/src/us_hydrodyn_residue_builder.cpp
Log Message:
-----------
somo/perceive: C++11 aggregate init in the residue builder
Same defect as the grpy one, in code that arrived with the perceiver:
src/us_hydrodyn_residue_builder.cpp:47: error: no matching member
function for call to 'push_back'
note: cannot convert initializer list argument to
'somo_volume::Sphere'
somo_volume::Sphere declares `double x = 0, y = 0, z = 0, r = 0;`, so it is
not an aggregate before C++14 and cannot be built from a braced list under
the C++11 that the Qt5 builds use. Filled field by field instead; the
initializers stay, since they are what make a default Sphere read zero.
This one is NOT new to this merge set -- it came in with the perceiver and is
already on main. It stayed hidden because the grpy error above aborted the
compile first, and because every CI container defaults to gnu++17.
With this, the whole library compiles at -std=gnu++11: 0 errors over the full
source tree, checked with make -k so nothing was masked by an early abort.
Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
Compare: https://github.com/ehb54/ultrascan3/compare/735d4f94f2cd...d37eeb1678b8
To unsubscribe from these emails, change your notification settings at https://github.com/ehb54/ultrascan3/settings/notifications
More information about the us-commits
mailing list