Если имеется некий большой проект, в котором необходимо найти места, в которых происходит копирование объекта через конструктор копирования или через оператор копирования, то можно поступить следующим образом.
В классе объекта надо создать "невызываемые" конструктор копирования и оператор копирования. Выглядят они примерно так:
LineLayout(LineLayout const &) = delete;
LineLayout & operator=(LineLayout const &) = delete;
То есть, синтаксис = delete; в определении функции/метода делает их невызываемыми.
Если нигде в коде не используется копирования через эти два механизма, то код без ошибок соберется компилятором и будет работать без изменений.
Если же где-то в коде есть вызов конструктора копирования или оператора копирования, то такой код не соберется, и компилятор выдаст ошибку на той строке, где происходит это действие. Таким образом, с помощью компилятора можно находить места вызовов конструктора копирования или оператора копирования. Причем, данный способ не зависит от компилятора - он будет работать на любом компиляторе, хоть на gcc, хоть на clang, хоть на msvc.