This thread has already beaten a dead horse enough that the horse came back as a zombie and was re-killed, but I couldn't help but respond to this part:

On 01/-10/-28163 01:59 PM, Adam Skutt wrote:
Code that relies on the identity of a temporary object is generally
incorrect.  This is why C++ explicitly forbids taking the address
(identity) of temporaries.

Except that C++ *doesn't* really forbid taking the address of a temporary, at least indirectly:

    #include <iostream>

    int const * address_of(int const & x) {
        return &x;
    }

    int main() {
        std::cout << address_of(1+2) << "\n";
    }

That complies without warning with GCC 4.6 '-Wall -Wextra', MSVC 2010 '/W4', and Comeau's online front end, and I am pretty confident that the above code is perfectly legal in terms of provoking undefined behavior (in the technical C++ sense of "your program is now allowed to set your cat on fire").

Evan
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to