【问题标题】:error: 'to' is not a member of 'std::ranges'错误:\'to\' 不是 \'std::ranges\' 的成员
【发布时间】:2022-12-03 06:52:51
【问题描述】:

面临的问题标准::范围::至我正在执行来自 https://en.cppreference.com/w/cpp/ranges/to 的以下示例

#include <algorithm>
#include <concepts>
#include <iostream>
#include <ranges>
#include <vector>
 
int main()
{
    auto vec = std::views::iota(1, 5)
             | std::views::transform([](auto const v){ return v * 2; })
             | std::ranges::to<std::vector>();
 
    static_assert(std::same_as<decltype(vec), std::vector<int>>);
 
    std::ranges::for_each(vec, [](auto const v){ std::cout << v << ' '; });
}

但是得到一个错误

main.cpp: In function 'int main()':
main.cpp:11:29: error: 'to' is not a member of 'std::ranges'
   11 |              | std::ranges::to<std::vector>();
      |                             ^~
main.cpp:11:43: error: missing template arguments before '>' token
   11 |              | std::ranges::to<std::vector>();
      |                                           ^
main.cpp:11:45: error: expected primary-expression before ')' token
   11 |              | std::ranges::to<std::vector>();
      |                                             ^
main.cpp:13:24: error: template argument 1 is invalid
   13 |     static_assert(std::same_as<decltype(vec), std::vector<int>>);

https://coliru.stacked-crooked.com/view?id=8fdd3554af82ef24

我正在使用编译器 C++23

【问题讨论】:

    标签: c++ c++23


    【解决方案1】:

    这是因为 std::ranges::to 目前仅受 MSVC 19.34 支持。

    您可以在此处查看编译器对语言和库功能的支持状态:https://en.cppreference.com/w/cpp/compiler_support

    例如,此功能在 C++23 库部分中列为 ranges::to() P1206R7

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-23
      • 2020-02-02
      • 2014-08-27
      • 2021-09-07
      • 2013-08-07
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多