std::mt_19937クラスをstd::random_deviceクラスの乱数で初期化する時このコードはコンパイルエラーになります。

#include<iostream>
#include<random>

int main(){

    std::mt19937 gen(std::random_device()());

    std::cout << gen() << std::endl;

    return 0;
}

std::random_dvice()が関数として捉えられているようです。(もしくは関数宣言?)

なので

std::mt19937 gen((std::random_device())());

とデフォルトコンストラクタを呼んでいることを明示化してやるとコンパイルが通ります。

これだとカッコの多さが気になるので

std::mt19937 gen(std::random_deviece{}())

と一様初期化で一時オブジェクトを生成するとうまくできるのですが
このカッコを多数書く書き方や一様初期化でやることが普通なのでしょうか?