[Issue 20850] New: Can't assign enum of Tuple

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed May 20 21:27:58 UTC 2020


https://issues.dlang.org/show_bug.cgi?id=20850

          Issue ID: 20850
           Summary: Can't assign enum of Tuple
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: phobos
          Assignee: nobody at puremagic.com
          Reporter: simen.kjaras at gmail.com

import std.typecons : Tuple, tuple;

enum RC5Command: Tuple!(ubyte, ubyte) {
       Standby = RC5Command(0,0)
}

unittest {
    RC5Command rc5command = RC5Command.Standby;
    rc5command = RC5Command.Standby; // This line
}

The above code fails to compile with:

Error: template std.typecons.Tuple!(ubyte, ubyte).Tuple.opAssign cannot deduce
function from argument types !()(RC5Command), candidates are:
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/typecons.d(900,19):
        opAssign(R)(auto ref R rhs)
  with R = RC5Command
  must satisfy the following constraint:
       areCompatibleTuples!(typeof(this), R, "=")

The root cause of this is areCompatibleTuples checks isTuple!Tup2, and should
check isTuple!(OriginalType!Tup2) to account for enums.

--


More information about the Digitalmars-d-bugs mailing list