如何在构造函数初始化列表中启用 ADL?例如,假设我有一个bignum
具有命名空间级函数的abs
函数。现在我想写一个类Foo
,用传递给构造函数的实例的绝对值初始化它的成员;abs
如果存在,它应该使用命名空间级别,std::abs
否则:
template<typename T>
struct Foo
{
T _data;
Foo(T data):
_data(abs(data)) // I want find abs with ADL here
{}
};
无论如何,在类范围内都禁止使用声明,我不想“污染”命名空间。如何启用 ADL 以便它在构造函数初始化列表中工作?