On Wed, 29 Sep 2010 11:21:11 +0400, Norbert Nemec
<[email protected]> wrote:
IMHO, the test misses the point of compile-time metaprogramming: The
concept of "state" belongs to run-time. The D compile-time language is
purely functional and does not know a state or even an "order of
execution".
The conditions "cannot die or be eaten twice" are, at their core, issues
of state. Any "solutions" that claim to catch one of the last three
errors must either go beyond the purely functional nature of the
compile-time language or rely on additional constraints (e.g. no reuse
of previous elements)
Of course, one could devise a language with non-functional compile time
features, but within D, this would fundamentally break the existing
concept of meta-programming.
In D, there are templates (that are written in functional style, have no
state etc) and there is also CTFE that allows mutable state (but no
classes).