Ответ 1
-fno-elide-constructors
Стандарт С++ позволяет реализации опускать создание временного объекта, который используется только для инициализации другого объекта того же типа. Указание этого параметра отключает эту оптимизацию и заставляет g++ вызывать конструктор копирования во всех случаях. [Источник: man gcc]