多数のメンバーを持つ POD 構造体があり、その算術演算子を C++11 で実装する最も効率的な方法を知りたいです。
この構造体は、数学的なコンテキストでプリミティブの代わりに使用することを意図しています。例えば:
template<typename Double>
Double calcSomething(const Double& d0, const Double& d1, const Double& d2)
{
return d0*d1 + 3*d2 - 6;
}
whereDouble
は単なる通常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 でこれを実装するための本当に効率的で効率的な方法はありますか? 大きな POD 構造体になる可能性があることに注意してくださいMyDouble
(つまり、2 つの double だけではありません)。
ヒープ割り当てメモリへのポインタを持たない構造体についての議論を続けたいと思います。