在Xcode的C++中,std::views命名空间是否不可用?

4

我有Xcode 14 beta,并尝试编译cppreference.com上的join example

#include <iostream>
#include <ranges>
#include <string_view>
#include <vector>
 
int main()
{
    using namespace std::literals;
    const auto bits = { "https:"sv, "//"sv, "cppreference"sv, "."sv, "com"sv };
    for (char const c : bits | std::views::join) std::cout << c; // Error 1
    std::cout << '\n';
 
    const std::vector<std::vector<int>> v{ {1,2}, {3,4,5}, {6}, {7,8,9} };
    auto jv = std::ranges::join_view(v);  // Error 2
    for (int const e : jv) std::cout << e << ' ';
    std::cout << '\n';
}

我遇到了错误:

1. No member named 'views' in namespace 'std'
2. No member named 'join_view' in namespace 'std::ranges'

参考网站显示这些内容“自C++20”就可用。我将语言构建设置设置为最高:C ++2bclang --version报告:Apple clang version 14.0.0(clang-1400.0.29.102)。

有没有办法让它与Xcode的C++编译器配合工作?

1个回答

5

我在“C++20库特性”中没有看到关于视图的提及,但是在C++23下有很多关于视图的红色行。令人沮丧。 - Rob N
如果我没记错的话,AppleClang 默认仍是 C++98 编译器,而其他编译器则将 C++14 或 C++17 设置为默认语言。 - 273K
5
对于C++20标准,该表格只有一行:The One Ranges Proposal. 该提案涉及范围(ranges)的使用。 - 273K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接