If doing that much work and bumping to upgrade for C++17 compliance I would
at least bump the version to 3.10.0

On Tue, Feb 18, 2025 at 8:12 PM Arjun Ray <ara...@gmail.com> wrote:

> On Sun, 16 Feb 2025 23:05:09 -0500, Arjun Ray <ara...@gmail.com>
> wrote:
>
> | To fix this, either the file m4/find_cppunit.m4 will have to be
> | modified - which could be non-trivial as pkg-config is not a drop-in
> | replacement for cppunit-config - or we can deploy a custom version of
> | cppunit-config (that basically wraps a call into pkg-config).
>
> In the event, I ended up writing a cheesy shell script to return hard
> coded values culled from the cppunit.pc file installed by the package.
> That seemed to satisfy the build m4 macros, and everything compiled
> successfully.
>
> All the tests passed as well (2070 regular tests, 133 integration
> tests.)
>
> I'm now down to one warning.
>
> 1.  The obsolete ASN1_STRING_data() function has been replaced by
> ASN1_STRING_get0_data, which is obviously a drop-in replacement (it
> simply "const"s the argument and return type.) This will break only
> old systems (which aren't likely to have C++17 compilers anyway.)
>
> 2.  The business with (volatile void **) has a workaround.  I replaced
> the call to
>
> : Atomics::compareAndSet((volatile void **)(&node->next), (void*)expect,
> (void*)update);
>
>  with a call to a templated function in the same file
>
> : Atomics::compareAndSwap<Node>(&node->next, expect, update);
>
> which expands to the same underlying call within Atomics.h.  That
> seemed to mollify the compiler.
>
> 3.  The last remaining warning has to do with a commonly recurring
> issue in the codebase: the class has a user-defined copy constructor
> but no corresponding cpy-assignment operator (hence created by the
> compiler, but with a warning).  The offending class in this instance
> is decaf::util::HashSet<int>.
>
> This is the Rule of Three (now Rule of Five for move semantics), where
> if any of (1) destructor, (2) copy constructor, or (3) copy-assignment
> operator are not defaulted (i.e left to the compiler to create
> implicitly), then none of them should be (because construction /
> destruction may need special treatment, such as pointer deletion.)
> C++11 introduced a language feature to specify "default" or "delete"
> for the declaration of these implicit functions.
>
> Fixing HashSet<> is complicated by its internals, which unfortunately
> is clearly a remarkably wooden translation of Java code.  It may turn
> out to be straightforward to fix, but I'd need to be careful with such
> heavily non-idiomatic code.
>
>
> Summing up, all these changes, while extensive, are internal only.
> Nothing has changed in terms of user-facing APIs.  If 3.9.5 is the
> current latest version, I suggest making this 3.9.6, with a prominent
> annotation somewhere that this is simply an upgrade for C++17
> compliance.  Those who don't need that can continue to use 3.9.5 for
> the same functionality.
>
>
> Arjun
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@activemq.apache.org
> For additional commands, e-mail: dev-h...@activemq.apache.org
> For further information, visit: https://activemq.apache.org/contact
>
>
>

Reply via email to