[Issue 22192] Inconsistent attribute inference for template member function

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Aug 8 14:26:08 UTC 2021


Paul Backus <snarwin+bugzilla at gmail.com> changed:

           What    |Removed                     |Added
                 CC|                            |snarwin+bugzilla at gmail.com
            Summary|[The D Bug Tracker]         |Inconsistent attribute
                   |                            |inference for template
                   |                            |member function

--- Comment #1 from Paul Backus <snarwin+bugzilla at gmail.com> ---
More reduced version of the inconsistent attribute inference issue:

struct S() {
    public void initialize() {}

    // void()
    pragma(msg, typeof(S!().initialize));
    // pure nothrow @nogc @safe void()
    pragma(msg, typeof(S!()().initialize));

More reduced version of the alignment issue:

struct S {
    align(1) int* p;

auto fun(int* p) {
    S s;
    s.p = p;
    return s;

// pure nothrow @nogc @safe S(int* p)
pragma(msg, typeof(fun));

I am not sure the second one is actually a bug. The language spec section on
pointers [1] does not say anything about misaligned pointer variables
potentially causing undefined behavior, and I have not been able to come up
with an example that uses such a variable to cause undefined behavior in @safe

For now, I've edited the name of this bugzilla issue to refer to the
attribute-inference issue in the first example, since that one's definitely a

[1] https://dlang.org/spec/arrays.html#pointers


More information about the Digitalmars-d-bugs mailing list