On Wed, Oct 03, 2018 at 12:30:28PM -0400, Nathan Sidwell wrote:
> On 10/1/18 7:47 PM, Jason Merrill wrote:
> > On Mon, Oct 1, 2018 at 6:41 PM Marek Polacek <[email protected]> wrote:
> > >
> > > This patch implements C++20 explicit(bool), as described in:
> > > <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html>.
> > >
> > > I tried to follow the noexcept specifier implementation where I could,
> > > which
> > > made the non-template parts of this fairly easy. To make explicit(expr)
> > > work
> > > with dependent expressions, I had to add DECL_EXPLICIT_SPEC to
> > > lang_decl_fn,
> > > which serves as a vessel to get the explicit-specifier to
> > > tsubst_function_decl
> > > where I substitute the dependent arguments.
> >
> > What's the impact of that on memory consumption? I'm nervous about
> > adding another word to most functions when it's not useful to most of
> > them. For several similar things we've been using hash tables on the
> > side.
>
> Iain had the same question about coroutine state. For the moment we're
> doing the simple thing of growing lang_decl_fn. It seems the better
> approach is a flag in the function_decl (or it's decl_lang_specific
> extension) to say 'go look over there', and a hash table you know will
> contain something.
Yeah, that is what is used e.g. for DECL_VALUE_EXPR, DECL_DEBUG_EXPR and
many other things.
Jakub