Это просто неверный синтаксис. Удалите квалификатор const, и вы получите
PNG( & PNG);
, что не имеет смысла. Это то же самое, что написать указатель вместо ссылки
PNG( * PNG);
. В обоих случаях спецификатор типа отсутствует. Ссылки и указатели должны ссылаться на спецификатор типа.
Вы можете написать либо
PNG(const PNG & );
, либо
PNG( PNG const & );
Обратите внимание на то, что напротив указателей нет константы ссылка. Например, для указателя вы можете написать
PNG( const PNG * const );
. Для справки такое объявление
PNG( const PNG & const );
недопустимо.
Согласно грамматике C ++ ссылки являются частями деклараторов. Например, вы можете написать
PNG( PNG const ( & ) );
, потому что деклараторы могут быть заключены в скобки.