Proposal: static template(fail)

Sean Kelly sean at f4.ca
Thu Dec 13 12:09:41 PST 2007


Janice Caron wrote:
> I would like to propose a new statement:
> 
>     static template(fail);
> 
> which causes a compile-time substitution failure. And remember: SFINAE
> - Substitution Failure Is Not An Error
> 
> Let me give you an example:
> 
>     struct S(T)
>     {
>         static if(isFloatingPoint!(T))
>         {
>             /*...*/
>         }
>         else static if(passesSomeVeryComplicatedTest!(T))
>         {
>             /*...*/
>         }
>         else
>         {
>             static template(fail); // SFINAE
>         }
>     }
> 
> This has advantages over old-style specialisation.

I guess this would require the compiler to not complain if I did this?

struct S(T)
{
     static if(is(T==int))
         static template(fail);
}

struct S(T)
{

}

S!(int);


Sean



More information about the Digitalmars-d mailing list