Skip to content

Template parameters (and locals) are unintuitively affected by endianness #119

@BobSmun

Description

@BobSmun
import std.io;
struct Test<auto t> {
    std::print("{}", t);
    u32 a = t;
};

le Test<5> test1;
be Test<5> test2;

std::print("{} {}",test1,test2);

results in:

I: 5
I: 5
I: bitfield Test { a = 5, t = 5 } bitfield Test { a = 83886080, t = 6646139978924579364519035301401722880 }

Inside the template, the parameter is read the same way (both being 5). This works as expected and allows consistent used for e.g. bitfield lengths.

However, the endianness seems to take effect when reading the template parameters (and locals) from outside the template. This makes it difficult to determine what they were, such as from a format function

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions