typeof function literals which define the types of its parameters but do not give their parameters names
    Steven Schveighoffer 
    schveiguy at gmail.com
       
    Thu Dec 27 16:05:39 UTC 2018
    
    
  
On 12/27/18 10:53 AM, Adam D. Ruppe wrote:
> On Thursday, 27 December 2018 at 15:39:23 UTC, Steven Schveighoffer wrote:
>> A template evaluating to a type void is how 
>> is(typeof(someTemplateDefinition)) works.
> 
> Yeah, I know of that, but with __traits(isTemplate) now, I don't think 
> there's any good reason to use the old hack detection anymore anyway.
Yeah, there's definitely ways to work around the limitation. 
__traits(compiles) might also help as well.
The real question is, does the current behavior lead to many bugs? If 
not, then even though it's a hack, it's not a harmful one.
One possibility I can think of is a function foo that takes a string 
delegate, you may expect this to work:
is(typeof(foo((string) {})))
When really you meant this:
is(typeof(foo((string s) {})))
But I wonder how often such a thing happens in practice.
-Steve
    
    
More information about the Digitalmars-d-learn
mailing list