Я знаю о сгенерированных компилятором функциях, правило трех и правило пяти. В реальных сценариях может оказаться нетривиальным выяснить, какие именно функции, сгенерированные компилятором (конструкторы, операторы присваивания, деструктор) были фактически созданы компилятором.
Есть ли способ перечислить сгенерированные компилятором функции для определенного класса?
Меня в первую очередь интересуют Visual Studio 2019 и Xcode, но общее решение было бы еще более желанным.
Конечно, есть. В Linux (и других системах Unix) , вы можете использовать
nm
,readelf
иobjdump
на сгенерированные объектные файлы / библиотеки / исполняемым разобрать их и проверять любые экспортируемые символы (и многое другое).Я знаю, что в Windows есть похожие инструменты , но я работаю не с такой платформой, поэтому, к сожалению, я не могу назвать точные названия инструментов.
источник
В настоящее время это только частичный ответ.
Visual Studio 2019
Конструкторы
При определении объекта класса функция IntelliSense в Visual Studio отображает доступные конструкторы, как сгенерированные компилятором, так и ваши собственные:
Эта информация не всегда всплывает, к сожалению. Чтобы заставить его работать на скриншоте выше, мне нужно было что-то напечатать в скобках, отсюда и запятая.
источник