我一直在研究std::span在Godbolt上使用clang干线和libc ++ 的最新规范,并发现一些令人困惑的构造函数。
特别是,我从一个普通的旧数组中发现了构造函数,并且a std::array与其他容器不同。
例如,以下代码似乎可以编译:
std::vector<int*> v = {nullptr, nullptr};
std::span<const int* const> s{v};
Run Code Online (Sandbox Code Playgroud)
但是,这不是:
std::array<int*, 2> a = {nullptr, nullptr};
std::span<const int* const> s{a};
Run Code Online (Sandbox Code Playgroud)
这似乎与cppreference.com上描述构造函数的方式保持一致,我只是在努力理解为什么是这种情况。有人可以照亮吗?