Lowerbound internal implementation


int main()
{
    set<ll>s={1,2,2,3,4,5};
    auto a =lower_bound(all(s),2.2);
    auto b=s.lower_bound(2.2);
    cout<<*a<<" "<<*b<<nl;
    return 0;
}


output : 3 2

Does the lowerbound fn of ordered container first converts the passed value to datatype of the container and then searches for it in the ordered container?
And this is not same for lowerbound fn for all container ?