new DIP47: Outlining member functions of aggregates
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Tue Sep 10 05:52:49 PDT 2013
On 10/09/13 14:12, Jacob Carlborg wrote:
> verifyDeclarations would look something like this, in pseudo code:
>
> void* verifyDeclarations (T) ()
> {
> static if (is(T == class))
> {
> foreach (member ; methods!(T))
> {
> static if (!hasDefinition!(member))
> static assert (false, "The member '" fullyQualifiedName!(T) ~
> "." ~ member.stringof ~ "' doesn't have a definition");
> }
> }
>
> return null;
> }
But the problem that I identified wasn't the possibility of members that are
declared but not defined. It was the possibility of members that are defined
but not included in the top-of-the-class list of separate declarations. The
whole point is that both the author and the recipient of the code should be able
to verify at compile-time that the list of declarations is an accurate summary
of the class.
I imagine you could define a verifySeparateDeclarations that would indeed
enforce that (for every declaration a definition, and for every definition a
separate declaration) but that would have its own issues.
More information about the Digitalmars-d
mailing list