私は、その値を計算するための2つのテンプレートパラメータに依存するテンプレート化されたクラスを持っていますが、それは構築用に1つだけです。私は生涯にわたる第二世代への依存を和らげたいと思います。私はテンプレートの静的関数を使用して値を計算し、次にインスタンスを作成することでこれを行うことを検討しています。このクラス内のメンバーはすべてconst POD型であり、アプリケーションの起動時にこのクラスの多くが作成されます。 一時的な一時参照の参照
template < class member >
class FOO {
public:
FOO() : a(7) {};
template < class scope >
static FOO CreateFOO()
{
return FOO();
};
private:
const int a;
};
template < class member, class scope >
const FOO<member>* function()
{
static const FOO<member>& temp = FOO<member>::CreateFOO<scope>();
return &temp;
}
int main() {
const FOO<int>* b = function< int, int >();
return 0;
}
私は移動の意味を意図するが、私は単純に本当にそこのconst POD型を含むていますので、任意のスワップとコピーして破壊するだけで動いていないです。上記は合理的/有効ですか?私が読んだことはすべてそれが大丈夫だということを示唆している!これを行うより良い方法はありますか?
:
はその後、あなたのシングルトンのための標準的な形式を持っているでしょうconst型 'である。それがあなたを得ると思いますか? –
私は右辺値にバインドできますか?コピーせずに? –
新しいオブジェクトを値で返すと、コンパイラはコピーを最適化する必要がありますが、実際にはそれが保証されていません。私は、コピーが起こったときとそうでないときが予測できることを望む。 – Kos