C++11 C++;带模板参数重载的11/14 friend运算符

C++11 C++;带模板参数重载的11/14 friend运算符,c++11,templates,operator-overloading,c++14,overload-resolution,C++11,Templates,Operator Overloading,C++14,Overload Resolution,在下面的代码中,我想为我要使用的特定类型定义实现二进制运算符链接的效果-对于普通运算符链接,二进制运算符返回相同类型的对象,大多数情况下只返回*this,它可以很容易地再次用于链接同一类型的下一个对象 然而,在我的例子中,二进制运算符将两个相同类型对象(awaitable::ref)的两个reference_包装器作为输入,并返回一个类型为(awaitable post)的聚合对象,似乎很好地解释了这种情况,但在我的例子中,friend运算符有一个模板参数(这是避免递归模板实例化所必需的),这可

在下面的代码中,我想为我要使用的特定类型定义实现二进制运算符链接的效果-对于普通运算符链接,二进制运算符返回相同类型的对象,大多数情况下只返回
*this
,它可以很容易地再次用于链接同一类型的下一个对象

然而,在我的例子中,二进制运算符将两个相同类型对象(
awaitable::ref
)的两个reference_包装器作为输入,并返回一个类型为(
awaitable post)的聚合对象,似乎很好地解释了这种情况,但在我的例子中,friend运算符有一个模板参数(这是避免递归模板实例化所必需的),这可能会阻止编译器在实例化模板时生成正确的命名空间作用域函数。

这就是您需要的吗

template < template <typename> class _awaitable, typename U >
friend auto operator||(_awaitable<std::reference_wrapper<U>> a1, ref a2)
{
    awaitable<ref> r;
    return r;
}
template