データメンバを value で初期化したい時に、

Hoge h( value );

とするのか、

Hoge h;
h.Init( value );

とするのか、いつも悩みます。
前者だと、

class Hoge
{
private:
  int m_value;
  Hoge();

public:
  Hoge( int value );
};

とした時に、value の渡し忘れを防ぐメリットが、
一方、後者だと value の結果(戻り値)が得られるメリットがありそうです。

こういう場合は戻り値が必要/不必要だけで判断していいんでしょうか?