--- Comment #1 from Greg Miller <gnu at mllr dot cc> ---
The issue is not related to iostream. So, here's perhaps a simpler reproduction
example that may focus more on the issue at hand.


struct A {
    long x : 32;
    long y : 33;

void F(int) {}
void F(long) {}
template <typename T>
void F(T) = delete;

int main() {
    A a;
    F(a.x);   // Calls F(long)
    F(+a.x);  // Calls F(int)
    F(a.y);   // Calls F(long)
    F(+a.y);  // error: use of deleted function 'void F(T) [with T = long

Here we can see that the type of the expression `+a.y` is `long int:33`, which
I suspect is a problem. I think the type of that expression should be `long

Reply via email to