RFE: -fconcepts support for libstdc++

Jonathan Wakely jwakely.gcc@gmail.com
Thu Jan 11 11:20:00 GMT 2018


On 11 January 2018 at 11:02, Avi Kivity wrote:
> C++ error messages are notoriously cryptic, but it's much worse when it
> comes from someone else code.
>
>
> In our code, we have a GCC6_CONCEPT(x) macro that wraps concept declarations
> and is defined as x when -fconcepts is enabled. It would be wonderful if
> something similar could be done to libstdc++ when -fconcepts is enabled.
>
>
> Now, the concept implementation in gcc may not match the draft standard
> exactly, but gcc and libstdc++ are developed in lockstep so when the
> compiler changes the library can change with it. We won't be able to rely on
> concepts for disambiguating between overloads, but they'll work well for
> improving the quality of diagnostics.

[N.B. This is probably better on the libstdc++ list, redirecting there]

I know Ville has experimented with using concepts for std::tuple,
because the SFINAE tricks needed there are frankly ludicrous.

But I think he did it to simplify the implementation, not for better
diagnostics, and of course you only simplify the implementation if you
replace the old code, not if you duplicate it and have two different
versions.

Have you found that you really do get better diagnostics when using
concepts? Unless we really do get significantly improved diagnostics I
don't think the cost of maintaining two versions of complex,
error-prone code is worth it. There's a risk of divergence in
semantics, and it's simply harder to maintain twice as much code.

But I'd certainly consider patches in this area, as long as they come
with analysis of the error modes, the resulting diagnostics, and don't
cause too much of a maintenance burden. As a community we do need to
start considering how best to apply concepts in existing code,
including the std::lib.



More information about the Gcc-help mailing list