(1)A CPO is a callable function object, which means you can easily pass it around to other functions without having to worry about the struggle that is passing around other kinds of polymorphic callables (like function templates and overload sets).
(2)ADL (C++参数依赖查找) ADL:它的规则就是当编译器对 无限定域的函数 调用进行名字查找时,除了当前名字空间域以外,也会把 函数参数类型所处的名字空间 加入查找的范围。. 什么是无限定域的函数?. function (args); // 无限定域 namespace ::function (args);