对于某些语法糖,我想返回对 的引用this
,但是在继承时,该函数应返回子类的类型:
class base {
T &operator!() { return *this; }
};
base b; b = !b;
class child : public base {};
child c; c = !c;
由于操作员,我不能只返回指针和 dynamic_cast 它,它必须是一个引用。
这甚至可能吗?使用decltype(*this)
for T 不起作用,也不起作用auto f()->decltype(*this)
,因为this
(虽然我不明白为什么,在自动情况下)
在 Scala 中,您可以编写如下内容:
template<typename T> class base {
T &f() { return *this; }
};
class child : public base<child> {};
但是我的 g++ 不会接受这个(不确定这是错误还是不在规范中?)
当然有明确的方式,但我想知道是否可以使用 C++11 特性来避免这种情况?
class child : public base {
child &operator!() { base::operator!(); return *this }
};