我有一个具有许多成员的 POD 结构,我想知道 C++11 中实现其算术运算符的最有效方法。
该结构旨在代替数学上下文中的原语;例如:
template<typename Double>
Double calcSomething(const Double& d0, const Double& d1, const Double& d2)
{
return d0*d1 + 3*d2 - 6;
}
whereDouble
要么只是一个 normal double
,要么是一个带有所有相关重载运算符的 POD 结构:
struct MyDouble
{
MyDouble(double a, double b) : _a(a), _b(b) {}
double _a;
double _b;
};
MyDouble operator+(const MyDouble& d0, const MyDouble& d1)
{
return MyDouble(d0._a + d1._a, d0._b + d1._b);
}
使用移动构造函数和右值引用在 C++11 中实现这一点是否有一种非常好的、有效的方法?请记住,这MyDouble
可能是一个大型 POD 结构(即不仅仅是两个双打)。
我想继续讨论没有指向堆分配内存的结构。