有没有办法方便地调用模板运算符 - > ? 在像变种
这样的类中有这种可能性会很酷例如:(这只是一个例子)
struct base_t
{
template<class T>
T* operator->()
{
return reinterpret_cast<T*>(this);
}
};
int main(int argc, char* argv[])
{
base_t x;
x.operator-><std::pair<int,int>>()->first; //works, but inconvenient
x<std::pair<int,int>>->first; // does not work
x-><std::pair<int,int>>first; //does not work
return 0;
}
我需要证明=)
答案 0 :(得分:1)
不,这不是真的,这怎么也不是真的
struct base_t
{
template<class T>
T operator () ()
{
return T();
}
};
int main()
{
base_t x;
x.operator ()<int>(); // works
x.()<int>(); // not works
}
如果T :: operator-&gt;(),则表达式x-> m被解释为(x.operator->()) - > m表示类型为T的类对象x 存在且是否通过重载解析机制选择运算符作为最佳匹配函数
postfix-expression - &gt; templateopt id-expression
postfix-expression - &gt;伪析构函数名
因此,语法x-><T>
完全不正确。