Согласно этой вики-странице следующий код:
#include <iostream>
struct C {
  C() = default;
  C(const C&) { std::cout << "A copy was made.\n"; }
};
C f() {
  return C();
}
int main() {
  std::cout << "Hello World!\n";
  C obj = f();
}
может производить разные выходные данные в зависимости от компилятора и настроек этого компилятора.
Как я могу писать программы, если я не могу предсказать, как они будут себя вести (я действительно не могу знать, что любой данный компилятор в любой данной версии с любыми заданными настройками будет или не будет оптимизировать)? Существуют ли какие-либо общие рекомендации относительно копирования-исключения, которым я должен следовать?
 
                                                                     
                                                                    