Thread overview
Why can't templatized classes be aliased ?
May 10, 2013
KeyboardRider
May 10, 2013
anonymous
May 10, 2013
KeyboardRider
May 10, 2013
Daniel Murphy
May 10, 2013
with these simple types:

class Implementator1(T){}
class Implementator2(T){}
class Implementator3(T){}

version(1)
{
  class ChosenImplementator(T): Implementator1!T{}
}

version(2)
{
  class ChosenImplementator(T): Implementator3!T{}
}

version(All)
{
  class Foo(T)
  {
     ChosenImplementator!T Bar;
  }
}

Why isn't it possible, technically, to alias a template ?
(such like that:)

version(1)
{
  alias (Implementator1(T)) ChosenImplementator(T);
}

version(2)
{
  alias (Implementator2(T)) ChosenImplementator(T);
}

which would avoid to polute a templatized class with some compiler switches.
Would aliasing template make sense ?
May 10, 2013
On Friday, 10 May 2013 at 15:53:25 UTC, KeyboardRider wrote:
> Why isn't it possible, technically, to alias a template ?
> (such like that:)
>
> version(1)
> {
>   alias (Implementator1(T)) ChosenImplementator(T);
> }

alias Implementator1 ChosenImplementator;
May 10, 2013
On Friday, 10 May 2013 at 15:57:48 UTC, anonymous wrote:
> On Friday, 10 May 2013 at 15:53:25 UTC, KeyboardRider wrote:
>> Why isn't it possible, technically, to alias a template ?
>> (such like that:)
>>
>> version(1)
>> {
>>  alias (Implementator1(T)) ChosenImplementator(T);
>> }
>
> alias Implementator1 ChosenImplementator;

All right thx. Nothing else to add. ;)

May 10, 2013
"KeyboardRider" <KeyboardRider@nowhere.com> wrote in message news:vabffcdkuarjzbsivkmc@forum.dlang.org...
> with these simple types:
>
> class Implementator1(T){}
> class Implementator2(T){}
> class Implementator3(T){}
>
> version(1)
> {
>   class ChosenImplementator(T): Implementator1!T{}
> }
>
> version(2)
> {
>   class ChosenImplementator(T): Implementator3!T{}
> }
>
> version(All)
> {
>   class Foo(T)
>   {
>      ChosenImplementator!T Bar;
>   }
> }
>
> Why isn't it possible, technically, to alias a template ?
> (such like that:)
>
> version(1)
> {
>   alias (Implementator1(T)) ChosenImplementator(T);
> }
>
> version(2)
> {
>   alias (Implementator2(T)) ChosenImplementator(T);
> }
>
> which would avoid to polute a templatized class with some compiler
> switches.
> Would aliasing template make sense ?

Or even

template ChosenImplementator(T) { alias ChosenImplementator = Implementator1!T; }