Transitioning libgomp from C to C++ implementation

Christopher Bazley chris.bazley@arm.com
Fri May 8 09:34:14 GMT 2026


On 08/05/2026 09:48, Arsen Arsenović wrote:
> Martin Uecker <muecker@gwdg.de> writes:
> 
>> I am not convinced that moving to C++ actually makes code more
>> type safe or otherwise better.
> 
> It certainly does, by providing a way to implement type-safe containers
> for instance, and by providing generic mechanisms of initialization and
> cleanup.
There are many implementations of type-safe containers in C (including 
Martin's). Whether those solutions would meet your expectations is 
another question.

It's tempting to think of type-safe vs. non-type-safe as a binary 
choice, but I think there are degrees of type safety. In my opinion, the 
de facto standard CONTAINER_OF() macro is type-safe enough to all 
intents and purposes.

C++'s templates undoubtedly provide a more powerful facility than the 
preprocessor, but some of us like being able to inspect and reason about 
preprocessed translation units.

The simplest way of implementing type-safe containers in C is to follow 
the precedent set by NDEBUG and predefine macros to the value of any 
required parameters before including any source files that require 
parametric polymorphism. This also offers the easiest and most 
straightforward migration path from monomorphic to polymorphic code.

-- 
Christopher Bazley
Staff Software Engineer, GNU Tools Team.
Arm Ltd, 110 Fulbourn Road, Cambridge, CB1 9NJ, UK.
http://www.arm.com/


More information about the Gcc mailing list