0

範囲を使用して 2 つの配列を比較しようとしており、これを印刷したいと考えています。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <array>
#include <ranges>

int main()
{
  std::array<int, 9> test{0, 2, 3, 8, 0, 5, 4, 0, 1};
  std::array<int, 9> ref{1, 2, 3, 4, 5, 6, 7, 8, 9};

  //auto found = std::views::take_while([ ref, test ](auto *it) -> auto { it = std::ranges::find_first_of(ref, test); return it; });

  auto found1 = std::views::take_while([ref, test]() { return std::ranges::find_first_of(ref, test); });
  int *i{0};
  while (*i != std::ranges::end(found1)){
    std::cout << i << " ";
    i++;
  }
}

しかし、理解できないエラーでコンパイルに失敗しました

$ g++ main.cpp -std=c++20 -o main
main.cpp: In function ‘int main()’:
main.cpp:16:39: error: no match for call to ‘(const std::ranges::__cust_access::_End) (std::ranges::views::__adaptor::_RangeAdaptorClosure<std::ranges::views::__adaptor::_RangeAdaptor<_Callable>::operator()<{main()::<lambda()>}>::<lambda(_Range&&)> >&)’
   16 |   while (*i != std::ranges::end(found1)){
      |                                       ^

found1 を印刷する方法はありますか?

4

1 に答える 1