On Sunday, 31 August 2014 at 12:01:43 UTC, evilrat wrote:
On Sunday, 31 August 2014 at 11:43:03 UTC, ketmar via Digitalmars-d-learn wrote:
On Sun, 31 Aug 2014 11:26:47 +0000
evilrat via Digitalmars-d-learn <[email protected]>
wrote:

alias myint = mixin("int"); // <- basic type expected blah blah
 mixin("alias myint = "~"int"~";");
?

wow, it works. i don't even think inverting it O_o
you saved my day, thanks.

ugh... somewhat related to original problem, made simple template for quick check if type present or provide alternative.

now that is something i am not understand.

sorry for my stupidness :(

--- code
struct A {}
alias coolStruct = typeByName!("MyStruct", A);

// oops, looks like alias is set to template itself, though
// code completion(mono-d) shows it is correctly aliased to A
//
// error: template instance is used as a type
void doSomething(coolStruct cs)
{
 .. do something with struct ..
}

--- template itself
template typeByName(alias Name, Replace)
{
 static if ( __traits(compiles, (mixin(Name~`.sizeof`))) )
  mixin(`alias typeByName = ` ~ Name ~ `;`);
 else
  static if ( (is(Replace == class) || is(Replace == struct)) )
   alias typeByName = Replace;
}

Reply via email to