我似乎不明白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发布于 2012-05-27 05:36:38
你可能有一个版本的clang还没有实现泛化的初始化器。主干顶端clang会编译你的代码。您可以使用以下命令检查此功能:
#if __has_feature(cxx_generalized_initializers) 以下是您可以检查的功能列表:
http://clang.llvm.org/docs/LanguageExtensions.html#cxx11
https://stackoverflow.com/questions/10769746
复制相似问题