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