[Issue 21210] New: std.traits : isAssignable false positive on disabled copy struct
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Sun Aug 30 14:01:45 UTC 2020
    
    
  
https://issues.dlang.org/show_bug.cgi?id=21210
          Issue ID: 21210
           Summary: std.traits : isAssignable false positive on disabled
                    copy struct
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: phobos
          Assignee: nobody at puremagic.com
          Reporter: pro.mathias.lang at gmail.com
The following code should either compile, or trigger the static assert:
```
import std.traits;
struct NC { @disable this(this); }
void main ()
{
    NC a, c;
    static assert(isAssignable!NC);
    c = NC();
    c = a;
}
```
Because `isAssignable` definition checks that both lvalues and rvalues can be
used.
However, on the lvalue assignment (`c = a`), the compiler errors out, even
though the `static assert` passed.
Found after https://github.com/dlang/phobos/pull/7609 was reverted.
I believe the reason for this is some aggressive const-folding on the compiler
side.
--
    
    
More information about the Digitalmars-d-bugs
mailing list