是否可以*this在成员函数内完美转发对象?如果是的话,我们该怎么做呢?如果不是,那么为什么不呢?我们有哪些替代方案可以达到同样的效果。
请参阅下面的代码片段以更好地理解该问题。
class Experiment {
public:
double i, j;
Experiment(double p_i = 0, double p_j = 0) : i(p_i), j(p_j) {}
double sum() { return i + j + someConstant(); }
double someConstant() && { return 10; }
double someConstant() & { return 100; }
};
int main() {
Experiment E(3, 5);
std::cout << std::move(E).sum() << "\n"; // prints: 108
std::cout << E.sum() << "\n"; // prints: 108
}
Run Code Online (Sandbox Code Playgroud)
如果我们认为*this成员函数内的对象double sum()始终是左值或x值(因此是左值),则此输出似乎是预期的。请确认这是否属实。
如何才能完美地将*this对象转发给成员函数 …
我知道这个网站上有数以百万计的类似问题,但没有人指出我难以理解的话题.
我想为这样的整数指针分配一个整数文字:
int *p=(int []){7} //casting the literal to array so that it would return the address of first element just like string literal.
Run Code Online (Sandbox Code Playgroud)
但它给出了错误:
括号类型后跟初始化列表是非标准显式类型转换语法.
这段代码在C中完美运行.
如果这种类型的转换在C++中是非法的,还有其他方法可以实现同样的目的吗?