[Issue 21451] New: __traits(compiles, ...) is wrong on overloaded templates instantiated with empty parens
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Dec 3 19:56:33 UTC 2020
https://issues.dlang.org/show_bug.cgi?id=21451
Issue ID: 21451
Summary: __traits(compiles, ...) is wrong on overloaded
templates instantiated with empty parens
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: regression
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: qs.il.paperinik at gmail.com
Since 2.064, the assert with // ??? succeeds.
>From 2.060 to 2.063, the respective assert fails as expected.
void f(int a : 1)() { }
void f(int b : 2)(int x) { }
void main()
{
static assert( __traits(compiles, f!1 ));
static assert( __traits(compiles, f!1() ));
static assert( __traits(compiles, f!2(2) ));
static assert(!__traits(compiles, f!(1, 2) ));
static assert( __traits(compiles, f!() )); // ???
static assert(!__traits(compiles, { f!(); }));
}
The marked assert shouldn't compile.
--
More information about the Digitalmars-d-bugs
mailing list