<div dir="ltr">Hi,<div><br></div><div>For code like:</div><div><div>namespace boost {</div><div>template <typename T, typename C></div><div>T lexical_cast(const C&) {</div><div>    return T();</div><div>}</div><div><br></div><div>}</div><div><br></div><div>int g();</div><div>long long f(int p);</div><div>using namespace boost;</div><div>int main() {</div><div>    auto s = lexical_cast<int>(5);</div><div>    auto p = lexical_cast<int>(6);</div><div>    long long z = lexical_cast<long long>(7);</div><div>    long long a2 = lexical_cast<long long>("1488");</div><div>    long long a3 = lexical_cast<int>("2137");</div><div><br></div><div>    g();</div><div>    int zda = g();</div><div>    f(5);</div><div>}</div></div><div><br></div><div>why does callExpr(hasDeclaration(functionDecl(returns(qualType(asString("long long")))))) binds to:</div><div><div>    long long z = lexical_cast<long long>(7);</div><div>                  ^~~~~~~~~~~~~~~~~~~~~~~~~~</div></div><div>(and few others)</div><div><br></div><div>but callExpr(hasDeclaration(functionDecl(returns(qualType(builtinType())))))</div><div>binds to only calls of non template functions like:</div><div><br></div><div><div>   g();</div><div>    ^~~</div><div><br></div><div>    int zda = g();<br></div><div>              ^~~</div><div><br></div><div>    f(5);<br></div><div>    ^~~~</div></div><div><br></div><div>Is it a bug?</div><div><br></div><div>Piotr</div></div>