这很好
namespace ns{
struct ObjectId{};
void foo(ObjectId){}
}
int main()
{
const auto o = ns::ObjectId{};
foo(o);
}
ADL通过其参数找到功能foo
的。
还
namespace ns{
using ObjectId = std::string;
void foo(ObjectId){}
}
int main()
{
const auto o = ns::ObjectId{};
foo(o);
}
收益error: use of undeclared identifier 'foo'; did you mean 'ns::foo'?
。
typedef
也是如此。
有人可以解释为什么会这样,以及如何在不创建无用结构的情况下解决它吗?