[Issue 17350] New: bitmanip checks min, while Ternary does not have this property
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Wed Apr 26 02:17:26 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=17350
Issue ID: 17350
Summary: bitmanip checks min, while Ternary does not have this
property
Product: D
Version: D2
Hardware: x86_64
OS: Mac OS X
Status: NEW
Severity: normal
Priority: P1
Component: phobos
Assignee: nobody at puremagic.com
Reporter: sascha.orlov at gmail.com
Trying this
import std.bitmanip;
import std.typecons;
void main(){}
struct S1
{
mixin(taggedPointer!(
Val*, "vv",
bool, "b1", 1,
bool, "b2", 1,
bool, "b3", 1));
}
struct S2
{
mixin(taggedPointer!(
Val*, "vv",
ubyte, "t", 3));
}
struct S3
{
mixin(taggedPointer!(
Val*, "vv",
Ternary, "t", 3));
}
struct Val
{
size_t dummy;
}
I got an error:
bitmanip.d(94,20): Error: no property 'min' for type 'Ternary'
bitmanip.d(127,20): Error: no property 'min' for type 'Ternary'
bitmanip.d(183,15): Error: template instance
std.bitmanip.createAccessors!("_vv_t", Ternary, "t", 3LU, 0LU) error
instantiating
bitmanip.d(243,11): instantiated from here: createFields!("_vv_t", 0LU,
Ternary, "t", 3, ulong, "", 61LU)
bitmanip.d(314,26): instantiated from here: createTaggedReference!(Val*, 8LU,
"vv", Ternary, "t", 3)
test62.d(17,8): instantiated from here: taggedPointer!(Val*, "vv", Ternary,
"t", 3)
I understand, that it is not possible to order a Ternary without
implifications. However, as the size allows it, it should be possible to use it
as a pointer discriminator.
--
More information about the Digitalmars-d-bugs
mailing list