write a function template specialisation that tests if an argument is known at compile time
Eric
noreply at null.com
Tue Aug 14 22:13:57 UTC 2018
On Tuesday, 14 August 2018 at 03:01:11 UTC, Cecil Ward wrote:
> On Tuesday, 14 August 2018 at 02:53:01 UTC, Cecil Ward wrote:
>> On Sunday, 12 August 2018 at 12:27:59 UTC, Alex wrote:
>>> On Saturday, 11 August 2018 at 05:17:51 UTC, Cecil Ward wrote:
>>>> T myfunc(T)( T x, uint mask )
>>>> if ( mask == 3 )
>>>> {
>>>> return fast_func( x, mask );
>>>> }
>>>>
>>>> [...]
>>>
>>> Is it the volcano pattern you are looking for?
>>> https://p0nce.github.io/d-idioms/#Is-this-available-at-compile-time-or-runtime?
>>
>> Wow, now that _is_ clever. I think that is definitely a big
>> part of it.
>>
>> Now somehow after having used a static if to select the
>> known-at-compile-time case I then have to test the argument
>> for particular values.
>>
>> So how to get the next step along the way?
>
> Would it be ok to ask Walter maybe ? I am so far out of my
> depth here tho.
If you are that far, then it seems simple. You always call it as
a template:
T myfunc(uint mask, T)(T x) {}
In myfunc you decide if umask is compile time or not. If not,
then call a templated function with static if's for specific
values, otherwise call the regular function.
More information about the Digitalmars-d-learn
mailing list