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

--- Comment #26 from Stas Sergeev <stsp at users dot sourceforge.net> ---
(In reply to Jonathan Wakely from comment #23)
> What you want (and what everybody I've seen asking for similar things)

But comment #17 shows the different use of
reinterpret_cast - offsetof in templates.
What work-around would you suggest for that case?

> A more limited extension that solves the problem is a lot more reasonable.

If it would have been done before the feature
is removed, and for every possible use-case, then
yes. :)
In any case, what limited extension would you
suggest for the offsetof case?
Would something like the below[1] considered as such extension
(currently doesn't compile):
---
template <auto O>
struct B {
    static constexpr int off = O();
};

struct A {
    char a;
    B<[](){ return offsetof(A, a); }> b;
};
---

Below is the very similar code[2] that actually compiles:
---
template <auto O>
struct B {
    static constexpr int off = O();
};

struct A {
    char a;
    static constexpr int off(void) { return offsetof(A, a); }
    B<off> b;
};
---

So given that [2] compiles and works, and [1]
can be used as a limited work-around for the
offsetof case (at least in my case [1] is enough),
I wonder if it can be considered as a possible extension.

Reply via email to