些細な解決策は次のとおりです。
class Number
{
public:
bool isFinite();
bool isPositive();
double value();
...
private:
double value_;
bool isFinite_;
bool isPositive_;
...
};
私が心配しているのは効率です。
効果的な C++ から: プログラムと設計を改善するための 55 の具体的な方法 (第 3 版)、Scott Meyers 著:
小さなオブジェクトに安価なコピー コンストラクターがある場合でも、パフォーマンスの問題が発生する可能性があります。一部のコンパイラでは、組み込み型とユーザー定義型の扱いが異なります。基になる表現が同じであってもです。たとえば、一部のコンパイラは、定期的に裸の double を喜んで配置しているにもかかわらず、double のみで構成されるオブジェクトをレジスタに配置することを拒否します。そのようなことが起こった場合、コンパイラは確実にポインター (参照の実装) をレジスターに入れるため、そのようなオブジェクトを参照によって渡す方がよい場合があります。
効率の問題を回避する方法はありますか? たとえば、アセンブリ言語の魔法を使用するライブラリは?