Clang++ 非静态数据成员初始化错误?C++11.

Clang++ non-static data member initialization error? C++11

本文关键字:错误 C++11 初始化 数据成员 静态 Clang++      更新时间:2023-10-16

我似乎无法弄清楚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

您可能有一个尚未实现通用初始值设定项的 clang 版本。 Tip-of-trunk clang 编译您的代码。 您可以使用以下方法检查此功能:

#if __has_feature(cxx_generalized_initializers) 

以下是您可以检查的功能列表:

http://clang.llvm.org/docs/LanguageExtensions.html#cxx11