私はそれを仮定するのは正しいですか
class D { /* ... */ };
int f (const D & t) { return /* something calculated from t */; }
template<class T>
class C {
private:
int m_i;
T m_t;
// or first m_t, then m_i -- careless order of declarations
public:
template<class T_>
C (T_ && t) : m_t (std::forward<T_> (t)), m_i (f (t)) {
}
};
C<D> c (D ());
が呼び出されt
たときに の値が移動されたため、バグが発生する可能性がありますか? (i) ファクトリ関数を使用するか、(ii)とが宣言さf(t)
れている順序に依存関係を導入する以外に、この問題を回避する方法はありますか?m_i
m_t