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;
+}
+