Clang が何を言っているのか、または G++-4.7 が正常にコンパイルしているように見えるので、それが正しいかどうかを理解できないようです。
このエラーはstd::uniform_int_distribution
、非静的メンバーの中括弧で初期化しようとしたことが原因です。
以下は失敗します (token_count
はテンプレート パラメーターです)。
std::uniform_int_distribution<Int> random_dist{0, token_count-1};
エラーで:
error: chosen constructor is explicit in copy-initialization
std::uniform_int_distribution<Int> random_dist{0, b-1};
^~~~~~~~
/usr/include/c++/v1/algorithm:2644:14: note: constructor declared here
explicit uniform_int_distribution(result_type __a = 0,
ただし、次のようにして初期化できます。
std::uniform_int_distribution<Int> random_dist = std::uniform_int_distribution<Int>(0, token_count - 1);
次のコマンドを使用してコンパイルしています: clang++ -std=c++11 -stdlib=libc++ -lc++abi
with Clang-3.2.
の出力clang -v
:
clang version 3.2 (trunk 157320)
Target: x86_64-unknown-linux-gnu
Thread model: posix