cat > bug.d << CODE import std.traits : isUnsigned; void pack(T)(in T value) if (is(T == bool)) { } void pack(T)(in T value) if (isUnsigned!T) { } void test() { pack(true); } CODE dmd -c -o- bug.d ---- bug.d(13): Error: bug.pack called with argument types (bool) matches both: bug.d(3): bug.pack!bool.pack(const(bool) value) and: bug.d(7): bug.pack!bool.pack(const(bool) value) ---- Caused by https://github.com/dlang/phobos/pull/5038, this breaks the msgpack-d-0.9.6.
I'd opt for a temporary phobos fix and a dmd deprecation/transition of __traits(isUnsigned, bool).
Pull for Phobos https://github.com/dlang/phobos/pull/5170
Commits pushed to master at https://github.com/dlang/phobos https://github.com/dlang/phobos/commit/58c91e1a2cbe0658a114bac87ebaed05fd630f88 Issue 17196 - [Reg 2.074] isUnsigned!bool now true https://github.com/dlang/phobos/commit/166ae7dde3b0c4f38be9957943f3f63175803988 Merge pull request #5170 from wilzbach/fix-17196 Issue 17196 - [Reg 2.074] isUnsigned!bool now true merged-on-behalf-of: Jack Stouffer <jack@jackstouffer.com>
Opened issue 17221 for the compiler change.
Commits pushed to newCTFE at https://github.com/dlang/phobos https://github.com/dlang/phobos/commit/58c91e1a2cbe0658a114bac87ebaed05fd630f88 Issue 17196 - [Reg 2.074] isUnsigned!bool now true https://github.com/dlang/phobos/commit/166ae7dde3b0c4f38be9957943f3f63175803988 Merge pull request #5170 from wilzbach/fix-17196
Commits pushed to stable at https://github.com/dlang/phobos https://github.com/dlang/phobos/commit/58c91e1a2cbe0658a114bac87ebaed05fd630f88 Issue 17196 - [Reg 2.074] isUnsigned!bool now true https://github.com/dlang/phobos/commit/166ae7dde3b0c4f38be9957943f3f63175803988 Merge pull request #5170 from wilzbach/fix-17196