Pointer semantics in CTFE
Steven Schveighoffer
schveiguy at yahoo.com
Wed May 30 09:03:22 PDT 2012
On Wed, 30 May 2012 11:33:54 -0400, Michel Fortin
<michel.fortin at michelf.com> wrote:
> On 2012-05-30 14:44:37 +0000, "Steven Schveighoffer"
> <schveiguy at yahoo.com> said:
>
>> On Tue, 29 May 2012 13:35:12 -0400, Michel Fortin
>> <michel.fortin at michelf.com> wrote:
>>
>>> Personally, I think it'd be much cleaner to go with some kind of
>>> magic function than trying to match the condition against a
>>> predefined pattern. Something like da.isSliceOf(a), which could do
>>> the usual pointer thing at runtime and call some sort of CTFE
>>> intrinsic at compile-time.
>> That doesn't help when most code does not use this today. I.e. one of
>> the main benefits of ctfe is that you don't *have* to write special
>> code.
>
> But at the other end, there should be an easy to understand separation
> between what is supported by CTFE and what is not. Once you try to add
> special cases for some code patterns by adding heuristics, those
> heuristics now define the line and would have to become part of the
> language specification.
>
> More generally, the drawback of this kind of pattern recognition is that
> there's an infinite pool of equivalent patterns to recognize, and
> seemingly innocuous changes to a CTFEable function could break its
> CTFEablility if they happen to cross the invisible boundary.
>
> I'm just trying to point out the drawbacks of too clever heuristics. If
> such an heuristic is used, I think it should be limited in scope and
> well documented. Unfortunately, that means you'll still have to care
> about writing code in a way that fits the documented pattern. It'd be
> much easier to reason about CTFEability if the pattern had to be
> encapsulated in its own function.
Unless of course, you simply always allow it, which is what I think we
should do :)
-Steve
More information about the Digitalmars-d
mailing list