Test case: int foo() { return 0; } int bar() @safe pure nothrow { return 1; } void main() { bool b; auto fptr = b ? &foo : &bar; } Since @safe, pure and nothrow function pointers are implicitly convertible to function pointers without these attributes, the above should compile just fine. Instead, dmd gives the following error: test.d(7): Error: incompatible types for ((& foo) ? (& bar)): 'int function()' and 'int function() pure nothrow @safe'
The patch/pull request for this has been sitting in github for a couple of months now. *** This issue has been marked as a duplicate of issue 3180 ***