[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#216280: g++-3.3: lvalue evaluated twice for ?: operator



Package: g++-3.3
Version: 1:3.3.2-0pre4
Severity: normal


The output of the following code, when compiled with g++-3.3 is '2'.  It 
should be '1'.

  #include <iostream>

  struct foo {
    foo()        : v(0), c(0) {}
    int& value() { c++; return v; }
    int count()  { return c; }
    int v, c;
  };


  int main(int argc, char* argv[])
  {
    foo f;
    f.value() = (argc - 1) ? 0 : 1;
    std::cout << f.count() << std::endl;
    return 0;
  }

f.value() is evaluated twice for the ?: operator.


-- System Information:
Debian Release: testing/unstable
Architecture: i386
Kernel: Linux rincewind 2.4.21-5-686-smp #1 SMP Sun Aug 24 16:31:04 EST 2003 i686
Locale: LANG=C, LC_CTYPE=C

Versions of packages g++-3.3 depends on:
ii  gcc-3.3                    1:3.3.2-0pre4 The GNU C compiler
ii  gcc-3.3-base               1:3.3.2-0pre4 The GNU Compiler Collection (base 
ii  libc6                      2.3.2-7       GNU C Library: Shared libraries an
ii  libstdc++5-3.3-dev         1:3.3.2-0pre4 The GNU Standard C++ Library v3 (d

-- no debconf information




Reply to: