Proposal: static template(fail)
Bill Baxter
dnewsgroup at billbaxter.com
Thu Dec 13 12:16:46 PST 2007
Sean Kelly wrote:
> 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
No, you have to make one of them specialized somehow, otherwise it's
just a good old fashioned redundant definition error. Like if you tried
to make two functions "void foo(int)".
--bb
More information about the Digitalmars-d
mailing list