On 03/09/2013 01:48 AM, DypthroposTheImposter wrote:
        See the static_if paper here:

http://isocpp.org/forums

Under the post "constraints and static if" there is a link to a
document about
static_if

https://docs.google.com/viewer?a=v&pid=forums&srcid=MDIyMDc3NjUwMTczOTM0Mjk3NjABMDI2MzM3MjkxNDM4NDQ5MzE4NDcBLWVsS1Y4dFhtdDhKATUBaXNvY3BwLm9yZwF2Mg


       Are they full of it?

Maybe. The paper is full of typos.

Has it caused the problems they mention in D?

All of the non-C++ specific ones that are not made up to make the paper longer. Eg:

0. Templates + static if are an ad-hoc abstraction mechanism.

1. Declaration-site template body type checking becomes undecidable.

2. Constraint-based overloading needs manual work in order to express specialization relations.


In D there also exist other problems that wouldn't occur in C++ in that form:

static if(!is(typeof(x))) enum y = 1;
static if(!is(typeof(y))) enum z = 2;
static if(!is(typeof(z))) enum x = 3;

The above currently does not have any defined behaviour. If the three are distributed to mutually importing modules, which constants get defined may depend on the order the modules are passed to DMD on the command line. (It is solvable, but so far few people have shown interest.)

Reply via email to