<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>I'm analyzing the following source line:<br></div>
<div> </div>
<div>auto it = v.begin(); // v is an std::vector<int><br></div>
<div> </div>
<div>As far as I'm able to reconstruct what happens using the checker callbacks, it goes somehow like this:<br></div>
<div> - checkPostCall on v.begin(): the call has been interpreted, the result is a lazyCompoundVal with a temp_object within it<br></div>
<div> - checkPostStmt on v.begin(): ProgramState::getSVal() yields the same result as above (the same lazyCompoundVal with the same temp_object within it)<br></div>
<div> - bind: some lazyCompoundVal with a temp_object within it to loc '&it' -- but this lazyCompoundVal and temp_object are different than above!!!<br></div>
<div> - checkPostStmt on v.begin() again: ProgramState::getSVal() yields &it, getting the SVal inside the region gives a lazyCompoundVal with 'it' in it<br></div>
<div> </div>
<div>My problem is that I'm unable to implement a checker that would need to track iterator values, as temp_objects just seem to pop and disappear without leaving a trace and without having any followable connection between them.<br></div>
<div> </div>
<div>Is this working as intended, and if so, how should I approach this? I recall there being an open project for better modelling of C++ temporary objects, is that whose effect I'm seeing here?<br></div>
<div> </div>
<div>Thanks!<br></div>
<div> </div>
<div id="sig19426269"><div class="signature">-- <br></div>
<div class="signature"> Gábor Kozár -- ShdNx<br></div>
<div class="signature"> kozargabor@gmail.com<br></div>
<div class="signature"> </div>
</div>
</body>
</html>