1
我意识到,无论是由operator->
返回,会调用operator->
在函数调用是这样的:如何判断一个“ - >”运算符是否最终返回一个类型?
someVarWithOverloadedOperator->someFunc();
,并呼吁->
功能的这一进程将继续下去,直到其中一人是一个指针,然后someFunc
从该指针被调用。
我的问题是:有没有办法迫使一个模板参数有其->
运营商最终返回某一类:
template<typename ThisClassOperatorMustReturn_TypeA_>
class MyClass{
void foo() {
ThisClassOperatorMustReturn_TypeA_ var;
var->someClassAFunc(); //I need this `->` operator to return type "A"
}
};
没有办法做到这一点?
必须在一定的阶级用来“原样”,也可以添加特定的方法,或为了实现这个模板限制的目的而成为该类的成员? –
你希望它在连锁调用,第一次调用或链条末尾返回'A'(所以'A *')? – Jarod42
您是否在'A *'和'declltype(var.operator - >())'之间尝试了'std :: is_same'的静态断言?(如果相关,丢弃'const'后? –