我想使用using
声明在特定函数查找上启用 ADL,以便我可以在构造函数初始化列表中使用它。
这是代码:
template< typename T >
struct RefWrapper
{
RefWrapper(T& t)
: w(t)
{}
T& w;
};
struct Val
{
Val(RefWrapper<Val> rw)
{/*...*/}
};
namespace X
{
template< typename T >
RefWrapper<T> MakeWrap(T& t)
{ return RefWrapper<T>(t); }
}
namespace Y
{
using X::MakeWrap; // god no !
struct C
{
//using X::MakeWrap; // I want it here
// error: using-declaration for non-member at class scope
C(Val& value) : member(MakeWrap(value))
{}
Val member;
};
}
相关:
using 声明应该有多窄?
在这个问题的独特答案中,(4)是不可能的,但这是我想要的地方!