Кто-нибудь знает, возможно ли включить любой вид регистрации на любом C ++?
совместимый компилятор (Visual Studios, g ++ и т. д.), чтобы я мог узнать, когда создаются временные объекты?
Например:
Допустим, у меня есть функция f(char x)
но я называю это с f(46)
Я буду видеть в журналах —
temporary char created promoting int @ function param f(46)
(или как то так)
Я прочитал опции переключения компилятора VS, и кажется, что это не
опция.
Я понимаю, что в новом стандарте есть понятие rvalue reference
(&&), который можно использовать для обнаружения большинства временных объектов для семантики перемещения, но это включает добавление нового кода / совместимого компилятора.
Так можно ли это сделать? Или это привилегированное знание компилятора?
Что было бы более полезным, так это встроенные аннотации в IDE (поскольку я предполагаю, что вы хотите оптимизировать, сводя к минимуму некоторые из этих временных значений?). На практике самым простым способом было бы изменить GCC или g ++ и заставить их общаться с плагином Visual Studio или чем-то еще. Они могли бы аннотировать с распределением регистра и все. Вау, это было бы действительно полезно.
За исключением таких усилий, и я не знаю ни одного, лучший способ — просто научиться читать сборку. В Visual Studio вы можете сделать так, чтобы скомпилированная сборка была встроена в источник, что очень полезно.
Других решений пока нет …