Listing 1: Failed reuse attempts

class X
    {
public:
    void f();
    X &operator=(X const &x)
        {
        if (&x != this)
            {

            ~X(); // #1
            // Error C2675: unary '~' : 'X' does not
            // define this operator or a conversion
            // to a type acceptable to the predefined
            // operator.

            X(x); // #2
            // Appears to put an anonymous X instance
            // copied from x on the stack.

            (this->*f)(); // #3
            // This compiles OK.

            (this->*~X)(); // #4
            // This doesn't compile, but should it?
            // Error C2275: 'X' : illegal use of this
            // type as an expression.

            (this->*X)(x); // #5
            // Same error here.

            (this->*operator=)(x); // #6
            // But this _does_ compile. (I know it's
            // nonsensical in this context.)

            (this->f)(); // #7
            // This also compiles OK, but should it?

            (this->~X)(); // #8
            // This compiles and works correctly, but
            // again, should it?

            (this->operator=)(x); // #9
            // This nonsensical code also compiles,
            // but again, should it?

            (this->X)(x); // #10
            // However, this does not compile.
            // Error C2273: 'function-style cast' :
            // illegal as right side of '->' operator

            // End result: code from copy constructor
            // has to be duplicated here.

            return *this;
            }
        }
    };