Answers to theory questions 180822 a) A::operator delete cannot be a private member of A since operator new will call A::operator delete if the constructor of A threw an exception. b) copy elision is a rule in the language which states that the compiler is free to remove unnecessary calls to copy and move constructors, even if they have observable side effects. c) std::operator<< is not available in the global namespace, but since we have std::cout as an argument, ADL will look for a matching operator<< in std as well. d) enum class Scoped_Enum { first_value, second_value }; e) A function has the strong exception guarantee if all modifications of the program state that the function performs are reverted when an exception is thrown.