<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>I'm trying to write a checker to determine when the std::find is passed an argument of type e.g. std::set::iterator. Unfortunately, in the AST, I cannot find the original type of the argument of std::find. This is what the AST dump shows:<br></div>
<div> </div>
<div>CXXConstructExpr 0xc09a530 'struct std::_Rb_tree_const_iterator<int>':'struct std::_Rb_tree_const_iterator<int>' 'void (const struct std::_Rb_tree_const_iterator<int> &) noexcept'<br></div>
<div>`-ImplicitCastExpr 0xc09a488 'const struct std::_Rb_tree_const_iterator<int>' lvalue <NoOp><br></div>
<div>  `-DeclRefExpr 0xc09a344 'struct std::_Rb_tree_const_iterator<int>':'struct std::_Rb_tree_const_iterator<int>' lvalue Var 0xc09a1b0 'it' 'struct std::_Rb_tree_const_iterator<int>':'struct std::_Rb_tree_const_iterator<int>'<br></div>
<div> </div>
<div>For:<br></div>
<div> </div>
<div>auto it = s.begin();<br></div>
<div>auto itEnd = s.end();<br></div>
<div>std::find(it, itEnd, 45); // dumping argument 0<br></div>
<div> </div>
<div>I would need to compare the type of argument 0 to std::set::iterator. However, I do not know how to get the Type representation of the latter only by the name. I tried using the IdentifierTable, but dumping it (iterating through it) just gives me a lot garbage keys, and it doesn't seem to recognize neither "set" or "std::set".<br></div>
<div> </div>
<div>So how should I go about doing this?<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>