我似乎无法弄清楚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
与Clang-3.2。
clang -v
的输出:
clang version 3.2 (trunk 157320)
Target: x86_64-unknown-linux-gnu
Thread model: posix
答案 0 :(得分:1)
您可能有一个尚未实现通用初始值设定项的clang版本。 Tip-of-trunk clang编译你的代码。您可以通过以下方式检查此功能:
#if __has_feature(cxx_generalized_initializers)
以下是您可以查看的功能列表: