Error: Declaration is not yet implemented in CTFE

Daniel Kozak via Digitalmars-d digitalmars-d at puremagic.com
Fri Nov 28 11:24:21 PST 2014


Dne Fri, 28 Nov 2014 20:01:41 +0100 bitwise via Digitalmars-d  
<digitalmars-d at puremagic.com> napsal(a):

> The docs for template mixins do show mixins inside functions, so is this  
> a bug, or is there something else I'm doing wrong?
>
> //**************************
> module main;
> import std.traits;
>
> class ModInfo {
>
> }
>
> mixin template moduleInfo(alias MODULE) {
> 	static const(ModInfo) __module_info = new ModInfo;
> }
>
> const(ModInfo) getModuleInfo(alias mod)() {
> 	static if(__traits(hasMember, mod, "__module_info")) {
> 		return __traits(getMember, mod, "__module_info");
> 	} else {
> 		mixin moduleInfo!mod;      // ERROR [1]
> 		return __module_info;
> 	}
> }
>
> void main() {
> 	static const(ModInfo) info = getModuleInfo!(main);
> }
> //**************************
>
> [1] main.d(17,3): Error: Declaration mixin moduleInfo!(main);
>   is not yet implemented in CTFE
> main.d(23,31):        called from here: getModuleInfo()


module main;

immutable class ModInfo {
	
}

static moduleInfo(alias MODULE)() {
	return new ModInfo();
}

static getModuleInfo(alias mod)() {
	static if(__traits(hasMember, mod, "__module_info")) {
		return __traits(getMember, mod, "__module_info");
	} else {
		return moduleInfo!mod;
	}
}

void main() {
	immutable info = getModuleInfo!(main);
}


More information about the Digitalmars-d mailing list