Mercurial > projects > dstress
changeset 466:fb12b778ea27
type safety of variadic arguments
Manfred Nowak <svv1999@hotmail.com>
2005-04-21
news:d46udp$1mqe$1@digitaldaemon.com
author | thomask |
---|---|
date | Thu, 21 Apr 2005 05:34:31 +0000 |
parents | e224de1ae026 |
children | 5d6bb14f6415 |
files | run/variadic_argument_04.d run/variadic_argument_05.d |
diffstat | 2 files changed, 60 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/variadic_argument_04.d Thu Apr 21 05:34:31 2005 +0000 @@ -0,0 +1,30 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Manfred Nowak <svv1999@hotmail.com> +// @date 2005-04-21 +// @uri@ news:d46udp$1mqe$1@digitaldaemon.com + +// @WARNING@ direct access to Phobos + +module dstress.run.variadic_argument_04; + +import std.stdarg; + +int status; + +template t(T){ + T t(...){ + assert(_arguments[ 0] != typeid( T)); + status++; + return va_arg!(T)(_argptr); + } +} + +int main(){ + t!(int delegate()) (delegate real(){return 1.1L;}); + assert(status==1); + return 0; +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/variadic_argument_05.d Thu Apr 21 05:34:31 2005 +0000 @@ -0,0 +1,30 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Manfred Nowak <svv1999@hotmail.com> +// @date 2005-04-21 +// @uri@ news:d46udp$1mqe$1@digitaldaemon.com + +// @WARNING@ direct access to Phobos + +module dstress.run.variadic_argument_05; + +import std.stdarg; + +int status; + +template t(T){ + T t(...){ + assert(_arguments[ 0] == typeid( T)); + status++; + return va_arg!(T)(_argptr); + } +} + +int main(){ + t!(int delegate()) (delegate int(){return 1;}); + assert(status==1); + return 0; +} +