[us-commits] [ehb54/ultrascan3] d2cc6b: grpy: build under C++11, test at that standard, an...

emre brookes noreply at github.com
Tue Aug 18 10:38:57 MDT 2026


  Branch: refs/heads/fix-cpp11-and-braces
  Home:   https://github.com/ehb54/ultrascan3
  Commit: d2cc6bdbcf7e83d3586a599fbc2e178dae0214c7
      https://github.com/ehb54/ultrascan3/commit/d2cc6bdbcf7e83d3586a599fbc2e178dae0214c7
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M us_somo/develop/grpy/grpy_exposure.hpp
    M us_somo/develop/grpy/grpy_shell.hpp
    M us_somo/develop/grpy/tests/run.sh
    M us_somo/develop/grpy/tests/test_shell.cpp
    M us_somo/develop/src/us_hydrodyn_grpy.cpp
    M us_somo/develop/src/us_hydrodyn_other.cpp
    M us_somo/develop/src/us_hydrodyn_settings.cpp

  Log Message:
  -----------
  grpy: build under C++11, test at that standard, and brace the module

Upstreams the fixes made while merging this module to main in
ehb54/ultrascan3#524, so somo-dev and main do not diverge.

C++11 correctness. SOMO supports Qt5 as well as Qt6, so it has to build under
the older compilers Qt5 is used with, and nothing in the build raises the
language standard. grpy_shell.hpp 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 `rep.prov[m] = { ... }` is not valid C++11. It
is assigned field by field now. The initializers stay -- prov is filled by
assign() and they are what make an untouched entry read false/nullptr rather
than indeterminate.

Why it was not caught: grpy/tests/run.sh compiled the module at -std=c++17, a
HIGHER standard than the product it ships in, so the tests 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 -- a question for the Qt6 migration. Any
compiler new enough to default to gnu++17 built it either way, which is why
CI stayed green while a Qt5 macOS build failed outright.

Coding standards. The four module files and the three us_hydrodyn_*.cpp sites
that this module added are braced per the UltraScan III standards, using
ehb54/grpy-cpp tools/us3_style.pl. Braces only on the us_hydrodyn_*.cpp
files -- no spacing or reindentation of surrounding code.

Verified here: 0 C++11 errors across grpy_shell, grpy_exposure, grpy_types
and grpy_process; test_shell and test_process both ALL PASS at -std=gnu++11;
us3_style.pl --check reports 0 violations on the module.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>



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