since D has Attribute lists e.g. @("string", 7, foo, bar) make them work with build-in attributes or convert build-in attributes to UDA's, then you can use them as single attributes or with attribute lists struct pure; struct safe; struct nothrow; ... @pure @safe @nothrow or @(pure, safe, nothrow)