Jacob Carlborg:
struct virtual {} // the UDA
class Foo
{
void a () {} // static assert, not declared as @virtual
@virtual void b () {} // ok
@virtual final void c () {} // static assert, declared as
final and @virtual
final d () {} // ok
}
checkVirtual!(Foo);
My original purposes for UDAs was to extend the type system, as
you have essentially done here. But to do that well enough the
attributes need to be more active.
An idea:
struct Small(T) if (T.sizeof <= 16) {}
@Small struct Bar {
int x;
}
Here Small get instantiated with T == Bar, and its constraint
performs the active compile-time test.
Bye,
bearophile