https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83730

--- Comment #5 from Wilhelm M <klaus.doldinger64 at googlemail dot com> ---
Only for completeness: if you write the following, no guards are produced:

struct A {
    A() = default; // if commented out, no guards are allocated
    void foo() {}
};

template<typename T>
struct B {
    static void foo() {
        mTop.foo();
    }
    inline static T mTop{};
};

int main() {
    B<A>::foo();
}

So the c++14 an c++17 variants produce the same guards if
default-initialization is used. But produce no guards if value-initialization
ist used or the defaulted ctor is removed. Thats strange ...

Reply via email to