Изменить следующим образом:
Pattern(Pattern const ©): element(copy.element){
Значения RV (например, возвращаемые экземпляром функции создателя) могут связываться только с «ссылкой на const» в C ++ 03.
BTW,что-то дает мне ощущение, что вы ожидали, что вторая строка в вашем main вызовет оператор присваивания.Это не правильно.Это утверждение, несмотря на его внешний вид, вызывает конструктор копирования для создания pt2.
EDIT 2:
$ 8,5 / 14- "Инициализация, которая происходит в виде
Tx = a;
, а также при передаче аргументов, возврате функции, создании исключения (15.1), обработке исключения (15.3) и инициализации составного элемента (8.5.1) называется copy-initialization. "