import std.exception , std.stdio , std.traits , std.net.isemail;
static auto validate( size_t value )
static auto validate( string value )
enforce( isEmail( value ).valid );
return NonZero( this.value.length );
void sendMessage( Email mail )
writeln( "Email sended to: " , mail );
sendMessage( Email.validate( "bar@example.com" ) );
auto str = "bar@example.com";
auto mail = Email.validate( str );
auto sub = str[ 0 .. 10 ];
static assert( !__traits( compiles , sendMessage( str ) ) );
static assert( !__traits( compiles , sendMessage( sub ) ) );
size_t divide( size_t a , NonZero b )
auto str = "bar@example.com";
auto mail = Email.validate( str );
divide( 1Lu , mail.length );
auto str = "bar@example.com";
static assert( !__traits( compiles , divide( 1Lu , str.length ) ) );