static map as a type function
schveiguy at gmail.com
Wed Sep 23 14:05:50 UTC 2020
On 9/23/20 9:38 AM, Stefan Koch wrote:
> On Wednesday, 23 September 2020 at 13:19:34 UTC, Steven Schveighoffer
>> On 9/23/20 8:40 AM, Stefan Koch wrote:
>>> On Wednesday, 23 September 2020 at 12:22:49 UTC, Jacob Carlborg wrote:
>>>> On Wednesday, 23 September 2020 at 09:46:54 UTC, Stefan Koch wrote:
>>>>> static assert(static_map_tf!sizeOf(Int, Ushort) == [4, 2]);
>>>> Is it possible to use a lambda here?
>>> It should be in theory but I advise against it. Mixing lambdas and
>>> template alias parameters leads to instantiating different template
>>> instances although semantically they're the same.
>> what about:
>> static_map_tf!((alias a) => a.sizeof)(...)
>> This shouldn't be a template.
> static_map_tf.d(12): vtemplate: 3 (3 unique) instantiation(s) of
> template `static_map_tf(alias F)(alias_array types...)` found
Ah ok. You meant the static map template is going to be different
because the lambdas are considered different aliases.
That's standard behavior for the current compiler too. I thought you
meant that type functions have an extra problem with templates using
It makes me wonder -- can the compiler determine identical lambdas and
reduce template instantiations? This was one of the problems with moving
from string lambdas to actual lambdas.
More information about the Digitalmars-d