以下示例std::array <char, N>
使用字符串文字初始化构造函数中的成员不会在 GCC 4.8 上编译,但使用 Clang 3.4 编译。
#include <iostream>
#include <array>
struct A {
std::array<char, 4> x;
A(std::array<char, 4> arr) : x(arr) {}
};
int main() {
// works with Clang 3.4, error in GCC 4.8.
// It should be the equivalent of "A a ({'b','u','g','\0'});"
A a ({"bug"});
for (std::size_t i = 0; i < a.x.size(); ++i)
std::cout << a.x[i] << '\n';
return 0;
}
在第一印象中,它看起来像一个 GCC 错误。我觉得它应该编译,因为我们可以std::array<char, N>
直接用字符串初始化 a 。例如:
std::array<char, 4> test = {"bug"}; //works
我很想看看标准对此有何评论。