www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Interfaces based on TypeTuple?

reply =?UTF-8?B?IsOYaXZpbmQi?= <oivind.loe gmail.com> writes:
How can I achieve something like the following? I want to create 
a class B that has all the interfaces of the class passed as a 
template parameter.

import std.trats;

interface I0 {}
interface I1 {}

class A : I0, I1 {}

class B!C : InterfacesTuple!C {}

void main() {
	B!A a;	
}
Dec 24 2013
next sibling parent =?UTF-8?B?IsOYaXZpbmQi?= <oivind.loe gmail.com> writes:
On Wednesday, 25 December 2013 at 07:45:37 UTC, Øivind wrote:
 How can I achieve something like the following? I want to 
 create a class B that has all the interfaces of the class 
 passed as a template parameter.

 import std.trats;

 interface I0 {}
 interface I1 {}

 class A : I0, I1 {}

 class B!C : InterfacesTuple!C {}

 void main() {
 	B!A a;	
 }
The above fails with the following error on DMD 2.064.2 /d925/f379.d(8): Error: { } expected following aggregate declaration /d925/f379.d(8): Error: Declaration expected, not '!' /d925/f379.d(12): Error: unrecognized declaration
Dec 24 2013
prev sibling parent reply "Jakob Ovrum" <jakobovrum gmail.com> writes:
On Wednesday, 25 December 2013 at 07:45:37 UTC, Øivind wrote:
 class B!C : InterfacesTuple!C {}
You probably meant: class B(C) : InterfacesTuple!C {}
Dec 24 2013
parent =?UTF-8?B?IsOYaXZpbmQi?= <oivind.loe gmail.com> writes:
On Wednesday, 25 December 2013 at 07:49:35 UTC, Jakob Ovrum wrote:
 On Wednesday, 25 December 2013 at 07:45:37 UTC, Øivind wrote:
 class B!C : InterfacesTuple!C {}
You probably meant: class B(C) : InterfacesTuple!C {}
Yes, stupid typo. Thanks for the quick answer. Awesome that this works :)
Dec 25 2013