Difference between "can call" and "can compile"

Steven Schveighoffer schveiguy at gmail.com
Tue Sep 15 19:12:04 UTC 2020


On 9/15/20 10:18 AM, WebFreak001 wrote:
> On Monday, 7 September 2020 at 14:57:24 UTC, Steven Schveighoffer wrote:
>> Consider a template function like this:
>>
>> void foo(T)(T v)
>> {
>>    auto x = v.someProperty;
>> }
>>
>> [...]
> 
> This is already possible from a library solution, see 
> https://forum.dlang.org/post/iribazqozceygujkvvjg@forum.dlang.org
> 
> However I imagine it is slow because of mixin operations + not well 
> defined because it uses stringof, but if you just want it in some small 
> project of yours you can just use that.

But that's the issue. If I know what small set of types should work, 
then I can just write overloads for those types.

It's when I don't know what type is going to be passed in.

I could probably switch to using "hasMember" in this use case, which is 
likely to be correct for all purposes that I have. It's just not 
applicable to a public library, which might use things other than members.

-Steve


More information about the Digitalmars-d mailing list