On Tue, 21 Mar 2023 at 11:21, Marc Glisse via Libstdc++ < libstdc++@gcc.gnu.org> wrote: > On Tue, 21 Mar 2023, Ken Matsui via Libstdc++ wrote: > > > /// add_const > > +#if __has_builtin(__add_const) > > + template > > + struct add_const > > + { using type = __add_const(_Tp); }; > > +#else > > template > > struct add_const > > { using type = _Tp const; }; > > +#endif > > Is that really better? You asked elsewhere if you should measure for each > patch, and I think that at least for such a trivial case, you need to > demonstrate that there is a point. The drawbacks are obvious: more code in > libstdc++, non-standard, and more builtins in the compiler. > Right, this one isn't even getting rid of any partial specializations, but it is giving the preprocessor more work to do. Adding the extra built-ins to the compiler makes the compiler (very slightly) bigger and slower, so a real benchmark would require comparing an unpatched gcc (without the new built-in) to a patched gcc and patched libstdc++ sources. > > Using builtins makes more sense for complicated traits where you can save > several instantiations. Now that you have done a couple simple cases to > see how it works, I think you should concentrate on the more complicated > cases. > > -- > Marc Glisse > >