[llvm] [ADT] Allow member pointers in map_range and map_to_vector (PR #181154)

via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 12 07:33:04 PST 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

* 60201 tests passed
* 1429 tests skipped

All executed tests passed, but another part of the build **failed**. Click on a failure below to see the details.

<details>
<summary>[code=1] unittests/ADT/CMakeFiles/ADTTests.dir/SmallVectorExtrasTest.cpp.obj</summary>

```
FAILED: [code=1] unittests/ADT/CMakeFiles/ADTTests.dir/SmallVectorExtrasTest.cpp.obj
sccache C:\clang\clang-msvc\bin\clang-cl.exe  /nologo -TP -DLLVM_BUILD_STATIC -DUNICODE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_GLIBCXX_ASSERTIONS -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iunittests\ADT -IC:\_work\llvm-project\llvm-project\llvm\unittests\ADT -Iinclude -IC:\_work\llvm-project\llvm-project\llvm\include -IC:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include -IC:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include /DWIN32 /D_WINDOWS   /Zc:inline /Zc:__cplusplus /Oi /Brepro /bigobj /permissive- -Werror=unguarded-availability-new /W4  -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wno-pass-failed -Wmisleading-indentation -Wctad-maybe-unsupported /Gw /O2 /Ob2  -MD -UNDEBUG -Wno-gnu-zero-variadic-macro-arguments /EHs-c- /GR- -Wno-suggest-override -std:c++17 /showIncludes /Founittests\ADT\CMakeFiles\ADTTests.dir\SmallVectorExtrasTest.cpp.obj /Fdunittests\ADT\CMakeFiles\ADTTests.dir\ -c -- C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\SmallVectorExtrasTest.cpp
In file included from C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\SmallVectorExtrasTest.cpp:13:
In file included from C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVectorExtras.h:17:
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(228,12): error: called object type 'int MapToVectorStruct::*' is not a function or function pointer
228 |     return (*Obj)(std::forward<Pn>(Params)...);
|            ^~~~~~
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1432,21): note: in instantiation of function template specialization 'llvm::callable_detail::Callable<int MapToVectorStruct::*>::operator()<MapToVectorStruct &, 0>' requested here
1432 |         -> decltype(static_cast<_Callable&&>(_Obj)(static_cast<_Types&&>(_Args)...)) {
|                     ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1531,17): note: while substituting deduced template arguments into function template '_Call' [with _Callable = const llvm::callable_detail::Callable<int MapToVectorStruct::*> &, _Types = <MapToVectorStruct &>]
1531 |     -> decltype(_Invoker1<_Callable, _Ty1>::_Call(
|                 ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(350,42): note: while substituting deduced template arguments into function template 'invoke' [with _Callable = const callable_detail::Callable<int MapToVectorStruct::*> &, _Ty1 = value_type &, _Types2 = <>]
350 |   ReferenceTy operator*() const { return std::invoke(F, *this->I); }
|                                          ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\xmemory(1680,32): note: in instantiation of member function 'llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>::operator*' requested here
1680 |         _Backout._Emplace_back(*_First);
|                                ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\xmemory(1693,26): note: in instantiation of function template specialization 'std::_Uninitialized_copy_unchecked<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>, int *>' requested here
1693 |     _Seek_wrapped(_Dest, _Uninitialized_copy_unchecked(_UFirst, _ULast, _UDest));
|                          ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(522,12): note: in instantiation of function template specialization 'std::uninitialized_copy<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>, int *>' requested here
522 |       std::uninitialized_copy(I, E, Dest);
|            ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(690,11): note: in instantiation of function template specialization 'llvm::SmallVectorTemplateBase<int>::uninitialized_copy<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>, int *>' requested here
690 |     this->uninitialized_copy(in_start, in_end, this->end());
|           ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(1226,11): note: in instantiation of function template specialization 'llvm::SmallVectorImpl<int>::append<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>, void>' requested here
1226 |     this->append(S, E);
|           ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(1312,10): note: in instantiation of function template specialization 'llvm::SmallVector<int>::SmallVector<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>, void>' requested here
1312 |   return {adl_begin(Range), adl_end(Range)};
|          ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVectorExtras.h(48,10): note: in instantiation of function template specialization 'llvm::to_vector<llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>>>' requested here
48 |   return to_vector(
|          ^
In file included from C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\SmallVectorExtrasTest.cpp:13:
In file included from C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVectorExtras.h:17:
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(350,42): error: no matching function for call to 'invoke'
350 |   ReferenceTy operator*() const { return std::invoke(F, *this->I); }
|                                          ^~~~~~~~~~~
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\xmemory(1680,32): note: in instantiation of member function 'llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>::operator*' requested here
1680 |         _Backout._Emplace_back(*_First);
|                                ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\xmemory(1693,26): note: in instantiation of function template specialization 'std::_Uninitialized_copy_unchecked<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>, int *>' requested here
1693 |     _Seek_wrapped(_Dest, _Uninitialized_copy_unchecked(_UFirst, _ULast, _UDest));
|                          ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(522,12): note: in instantiation of function template specialization 'std::uninitialized_copy<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>, int *>' requested here
522 |       std::uninitialized_copy(I, E, Dest);
|            ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(690,11): note: in instantiation of function template specialization 'llvm::SmallVectorTemplateBase<int>::uninitialized_copy<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>, int *>' requested here
690 |     this->uninitialized_copy(in_start, in_end, this->end());
|           ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(1226,11): note: in instantiation of function template specialization 'llvm::SmallVectorImpl<int>::append<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>, void>' requested here
1226 |     this->append(S, E);
|           ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(1312,10): note: in instantiation of function template specialization 'llvm::SmallVector<int>::SmallVector<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>, void>' requested here
1312 |   return {adl_begin(Range), adl_end(Range)};
|          ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVectorExtras.h(48,10): note: in instantiation of function template specialization 'llvm::to_vector<llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int MapToVectorStruct::*>>>' requested here
48 |   return to_vector(
|          ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1528,19): note: candidate template ignored: substitution failure [with _Callable = const callable_detail::Callable<int MapToVectorStruct::*> &, _Ty1 = value_type &, _Types2 = <>]: no matching function for call to '_Call'
1528 | _CONSTEXPR17 auto invoke(_Callable&& _Obj, _Ty1&& _Arg1, _Types2&&... _Args2) noexcept(
|                   ^
1529 |     noexcept(_Invoker1<_Callable, _Ty1>::_Call(
1530 |         static_cast<_Callable&&>(_Obj), static_cast<_Ty1&&>(_Arg1), static_cast<_Types2&&>(_Args2)...)))
1531 |     -> decltype(_Invoker1<_Callable, _Ty1>::_Call(
|                 ~~~~~~~~~
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1522,19): note: candidate function template not viable: requires single argument '_Obj', but 2 arguments were provided
1522 | _CONSTEXPR17 auto invoke(_Callable&& _Obj) noexcept(noexcept(static_cast<_Callable&&>(_Obj)()))
|                   ^      ~~~~~~~~~~~~~~~~
In file included from C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\SmallVectorExtrasTest.cpp:13:
In file included from C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVectorExtras.h:17:
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(228,12): error: called object type 'int (MapToVectorStruct::*)() const' is not a function or function pointer
228 |     return (*Obj)(std::forward<Pn>(Params)...);
|            ^~~~~~
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1432,21): note: in instantiation of function template specialization 'llvm::callable_detail::Callable<int (MapToVectorStruct::*)() const>::operator()<MapToVectorStruct &, 0>' requested here
1432 |         -> decltype(static_cast<_Callable&&>(_Obj)(static_cast<_Types&&>(_Args)...)) {
|                     ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1531,17): note: while substituting deduced template arguments into function template '_Call' [with _Callable = const llvm::callable_detail::Callable<int (MapToVectorStruct::*)() const> &, _Types = <MapToVectorStruct &>]
1531 |     -> decltype(_Invoker1<_Callable, _Ty1>::_Call(
|                 ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(350,42): note: while substituting deduced template arguments into function template 'invoke' [with _Callable = const callable_detail::Callable<int (MapToVectorStruct::*)() const> &, _Ty1 = value_type &, _Types2 = <>]
350 |   ReferenceTy operator*() const { return std::invoke(F, *this->I); }
|                                          ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\xmemory(1680,32): note: in instantiation of member function 'llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>::operator*' requested here
1680 |         _Backout._Emplace_back(*_First);
|                                ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\xmemory(1693,26): note: in instantiation of function template specialization 'std::_Uninitialized_copy_unchecked<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>, int *>' requested here
1693 |     _Seek_wrapped(_Dest, _Uninitialized_copy_unchecked(_UFirst, _ULast, _UDest));
|                          ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(522,12): note: in instantiation of function template specialization 'std::uninitialized_copy<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>, int *>' requested here
522 |       std::uninitialized_copy(I, E, Dest);
|            ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(690,11): note: in instantiation of function template specialization 'llvm::SmallVectorTemplateBase<int>::uninitialized_copy<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>, int *>' requested here
690 |     this->uninitialized_copy(in_start, in_end, this->end());
|           ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(1226,11): note: in instantiation of function template specialization 'llvm::SmallVectorImpl<int>::append<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>, void>' requested here
1226 |     this->append(S, E);
|           ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(1312,10): note: in instantiation of function template specialization 'llvm::SmallVector<int>::SmallVector<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>, void>' requested here
1312 |   return {adl_begin(Range), adl_end(Range)};
|          ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVectorExtras.h(48,10): note: in instantiation of function template specialization 'llvm::to_vector<llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>>>' requested here
48 |   return to_vector(
|          ^
In file included from C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\SmallVectorExtrasTest.cpp:13:
In file included from C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVectorExtras.h:17:
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(350,42): error: no matching function for call to 'invoke'
350 |   ReferenceTy operator*() const { return std::invoke(F, *this->I); }
|                                          ^~~~~~~~~~~
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\xmemory(1680,32): note: in instantiation of member function 'llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>::operator*' requested here
1680 |         _Backout._Emplace_back(*_First);
|                                ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\xmemory(1693,26): note: in instantiation of function template specialization 'std::_Uninitialized_copy_unchecked<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>, int *>' requested here
1693 |     _Seek_wrapped(_Dest, _Uninitialized_copy_unchecked(_UFirst, _ULast, _UDest));
|                          ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(522,12): note: in instantiation of function template specialization 'std::uninitialized_copy<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>, int *>' requested here
522 |       std::uninitialized_copy(I, E, Dest);
|            ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(690,11): note: in instantiation of function template specialization 'llvm::SmallVectorTemplateBase<int>::uninitialized_copy<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>, int *>' requested here
690 |     this->uninitialized_copy(in_start, in_end, this->end());
|           ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(1226,11): note: in instantiation of function template specialization 'llvm::SmallVectorImpl<int>::append<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>, void>' requested here
1226 |     this->append(S, E);
|           ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVector.h(1312,10): note: in instantiation of function template specialization 'llvm::SmallVector<int>::SmallVector<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>, void>' requested here
1312 |   return {adl_begin(Range), adl_end(Range)};
|          ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/SmallVectorExtras.h(48,10): note: in instantiation of function template specialization 'llvm::to_vector<llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapToVectorStruct>>>, int (MapToVectorStruct::*)() const>>>' requested here
48 |   return to_vector(
|          ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1528,19): note: candidate template ignored: substitution failure [with _Callable = const callable_detail::Callable<int (MapToVectorStruct::*)() const> &, _Ty1 = value_type &, _Types2 = <>]: no matching function for call to '_Call'
1528 | _CONSTEXPR17 auto invoke(_Callable&& _Obj, _Ty1&& _Arg1, _Types2&&... _Args2) noexcept(
|                   ^
1529 |     noexcept(_Invoker1<_Callable, _Ty1>::_Call(
1530 |         static_cast<_Callable&&>(_Obj), static_cast<_Ty1&&>(_Arg1), static_cast<_Types2&&>(_Args2)...)))
1531 |     -> decltype(_Invoker1<_Callable, _Ty1>::_Call(
|                 ~~~~~~~~~
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1522,19): note: candidate function template not viable: requires single argument '_Obj', but 2 arguments were provided
1522 | _CONSTEXPR17 auto invoke(_Callable&& _Obj) noexcept(noexcept(static_cast<_Callable&&>(_Obj)()))
|                   ^      ~~~~~~~~~~~~~~~~
4 errors generated.
```
</details>
<details>
<summary>[code=1] unittests/ADT/CMakeFiles/ADTTests.dir/STLExtrasTest.cpp.obj</summary>

```
FAILED: [code=1] unittests/ADT/CMakeFiles/ADTTests.dir/STLExtrasTest.cpp.obj
sccache C:\clang\clang-msvc\bin\clang-cl.exe  /nologo -TP -DLLVM_BUILD_STATIC -DUNICODE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_GLIBCXX_ASSERTIONS -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iunittests\ADT -IC:\_work\llvm-project\llvm-project\llvm\unittests\ADT -Iinclude -IC:\_work\llvm-project\llvm-project\llvm\include -IC:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include -IC:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include /DWIN32 /D_WINDOWS   /Zc:inline /Zc:__cplusplus /Oi /Brepro /bigobj /permissive- -Werror=unguarded-availability-new /W4  -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wno-pass-failed -Wmisleading-indentation -Wctad-maybe-unsupported /Gw /O2 /Ob2  -MD -UNDEBUG -Wno-gnu-zero-variadic-macro-arguments /EHs-c- /GR- -Wno-suggest-override -std:c++17 /showIncludes /Founittests\ADT\CMakeFiles\ADTTests.dir\STLExtrasTest.cpp.obj /Fdunittests\ADT\CMakeFiles\ADTTests.dir\ -c -- C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\STLExtrasTest.cpp
In file included from C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\STLExtrasTest.cpp:9:
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(228,12): error: called object type 'int MapRangeStruct::*' is not a function or function pointer
228 |     return (*Obj)(std::forward<Pn>(Params)...);
|            ^~~~~~
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1432,21): note: in instantiation of function template specialization 'llvm::callable_detail::Callable<int MapRangeStruct::*>::operator()<MapRangeStruct &, 0>' requested here
1432 |         -> decltype(static_cast<_Callable&&>(_Obj)(static_cast<_Types&&>(_Args)...)) {
|                     ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1531,17): note: while substituting deduced template arguments into function template '_Call' [with _Callable = const llvm::callable_detail::Callable<int MapRangeStruct::*> &, _Types = <MapRangeStruct &>]
1531 |     -> decltype(_Invoker1<_Callable, _Ty1>::_Call(
|                 ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(350,42): note: while substituting deduced template arguments into function template 'invoke' [with _Callable = const callable_detail::Callable<int MapRangeStruct::*> &, _Ty1 = value_type &, _Types2 = <>]
350 |   ReferenceTy operator*() const { return std::invoke(F, *this->I); }
|                                          ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3467,53): note: in instantiation of member function 'llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>::operator*' requested here
3467 |         match = matchers_[exam_pos].MatchAndExplain(*it, &s);
|                                                     ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3399,3): note: in instantiation of member function 'testing::internal::ElementsAreMatcherImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &>::MatchAndExplain' requested here
3399 |   ElementsAreMatcherImpl(InputIter first, InputIter last) {
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3797,35): note: (skipping 2 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
3797 |     return Matcher<Container>(new ElementsAreMatcherImpl<const Container&>(
|                                   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(355,12): note: in instantiation of function template specialization 'testing::internal::MatcherCastImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::CastImpl<false>' requested here
355 |     return CastImpl(polymorphic_matcher_or_value,
|            ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(515,43): note: in instantiation of member function 'testing::internal::MatcherCastImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::Cast' requested here
515 |   return internal::MatcherCastImpl<T, M>::Cast(matcher);
|                                           ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(522,10): note: in instantiation of function template specialization 'testing::MatcherCast<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>' requested here
522 |   return MatcherCast<T>(polymorphic_matcher_or_value);
|          ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(1591,39): note: in instantiation of function template specialization 'testing::SafeMatcherCast<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>' requested here
1591 |     const Matcher<const T&> matcher = SafeMatcherCast<const T&>(matcher_);
|                                       ^
C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\STLExtrasTest.cpp(855,3): note: in instantiation of function template specialization 'testing::internal::PredicateFormatterFromMatcher<testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::operator()<llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>>>' requested here
855 |   EXPECT_THAT(map_range(Structs, &MapRangeStruct::X), ElementsAre(1, 2, 3));
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(5495,3): note: expanded from macro 'EXPECT_THAT'
5495 |   EXPECT_PRED_FORMAT1(              \
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(109,3): note: expanded from macro 'EXPECT_PRED_FORMAT1'
109 |   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(100,28): note: expanded from macro 'GTEST_PRED_FORMAT1_'
100 |   GTEST_ASSERT_(pred_format(#v1, v1), on_failure)
|                            ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(79,52): note: expanded from macro 'GTEST_ASSERT_'
79 |   if (const ::testing::AssertionResult gtest_ar = (expression)) \
|                                                    ^
In file included from C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\STLExtrasTest.cpp:9:
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(350,42): error: no matching function for call to 'invoke'
350 |   ReferenceTy operator*() const { return std::invoke(F, *this->I); }
|                                          ^~~~~~~~~~~
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3467,53): note: in instantiation of member function 'llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>::operator*' requested here
3467 |         match = matchers_[exam_pos].MatchAndExplain(*it, &s);
|                                                     ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3399,3): note: in instantiation of member function 'testing::internal::ElementsAreMatcherImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &>::MatchAndExplain' requested here
3399 |   ElementsAreMatcherImpl(InputIter first, InputIter last) {
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3797,35): note: in instantiation of function template specialization 'testing::internal::ElementsAreMatcherImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &>::ElementsAreMatcherImpl<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<testing::Matcher<const int &>>>>>' requested here
3797 |     return Matcher<Container>(new ElementsAreMatcherImpl<const Container&>(
|                                   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(373,12): note: in instantiation of function template specialization 'testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>::operator Matcher<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &>' requested here
373 |     return polymorphic_matcher_or_value;
|            ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(355,12): note: in instantiation of function template specialization 'testing::internal::MatcherCastImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::CastImpl<false>' requested here
355 |     return CastImpl(polymorphic_matcher_or_value,
|            ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(515,43): note: in instantiation of member function 'testing::internal::MatcherCastImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::Cast' requested here
515 |   return internal::MatcherCastImpl<T, M>::Cast(matcher);
|                                           ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(522,10): note: in instantiation of function template specialization 'testing::MatcherCast<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>' requested here
522 |   return MatcherCast<T>(polymorphic_matcher_or_value);
|          ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(1591,39): note: in instantiation of function template specialization 'testing::SafeMatcherCast<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>' requested here
1591 |     const Matcher<const T&> matcher = SafeMatcherCast<const T&>(matcher_);
|                                       ^
C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\STLExtrasTest.cpp(855,3): note: in instantiation of function template specialization 'testing::internal::PredicateFormatterFromMatcher<testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::operator()<llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int MapRangeStruct::*>>>' requested here
855 |   EXPECT_THAT(map_range(Structs, &MapRangeStruct::X), ElementsAre(1, 2, 3));
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(5495,3): note: expanded from macro 'EXPECT_THAT'
5495 |   EXPECT_PRED_FORMAT1(              \
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(109,3): note: expanded from macro 'EXPECT_PRED_FORMAT1'
109 |   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(100,28): note: expanded from macro 'GTEST_PRED_FORMAT1_'
100 |   GTEST_ASSERT_(pred_format(#v1, v1), on_failure)
|                            ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(79,52): note: expanded from macro 'GTEST_ASSERT_'
79 |   if (const ::testing::AssertionResult gtest_ar = (expression)) \
|                                                    ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1528,19): note: candidate template ignored: substitution failure [with _Callable = const callable_detail::Callable<int MapRangeStruct::*> &, _Ty1 = value_type &, _Types2 = <>]: no matching function for call to '_Call'
1528 | _CONSTEXPR17 auto invoke(_Callable&& _Obj, _Ty1&& _Arg1, _Types2&&... _Args2) noexcept(
|                   ^
1529 |     noexcept(_Invoker1<_Callable, _Ty1>::_Call(
1530 |         static_cast<_Callable&&>(_Obj), static_cast<_Ty1&&>(_Arg1), static_cast<_Types2&&>(_Args2)...)))
1531 |     -> decltype(_Invoker1<_Callable, _Ty1>::_Call(
|                 ~~~~~~~~~
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1522,19): note: candidate function template not viable: requires single argument '_Obj', but 2 arguments were provided
1522 | _CONSTEXPR17 auto invoke(_Callable&& _Obj) noexcept(noexcept(static_cast<_Callable&&>(_Obj)()))
|                   ^      ~~~~~~~~~~~~~~~~
In file included from C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\STLExtrasTest.cpp:9:
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(228,12): error: called object type 'int (MapRangeStruct::*)() const' is not a function or function pointer
228 |     return (*Obj)(std::forward<Pn>(Params)...);
|            ^~~~~~
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1432,21): note: in instantiation of function template specialization 'llvm::callable_detail::Callable<int (MapRangeStruct::*)() const>::operator()<MapRangeStruct &, 0>' requested here
1432 |         -> decltype(static_cast<_Callable&&>(_Obj)(static_cast<_Types&&>(_Args)...)) {
|                     ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1531,17): note: while substituting deduced template arguments into function template '_Call' [with _Callable = const llvm::callable_detail::Callable<int (MapRangeStruct::*)() const> &, _Types = <MapRangeStruct &>]
1531 |     -> decltype(_Invoker1<_Callable, _Ty1>::_Call(
|                 ^
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(350,42): note: while substituting deduced template arguments into function template 'invoke' [with _Callable = const callable_detail::Callable<int (MapRangeStruct::*)() const> &, _Ty1 = value_type &, _Types2 = <>]
350 |   ReferenceTy operator*() const { return std::invoke(F, *this->I); }
|                                          ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3467,53): note: in instantiation of member function 'llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>::operator*' requested here
3467 |         match = matchers_[exam_pos].MatchAndExplain(*it, &s);
|                                                     ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3399,3): note: in instantiation of member function 'testing::internal::ElementsAreMatcherImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &>::MatchAndExplain' requested here
3399 |   ElementsAreMatcherImpl(InputIter first, InputIter last) {
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3797,35): note: (skipping 2 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
3797 |     return Matcher<Container>(new ElementsAreMatcherImpl<const Container&>(
|                                   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(355,12): note: in instantiation of function template specialization 'testing::internal::MatcherCastImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::CastImpl<false>' requested here
355 |     return CastImpl(polymorphic_matcher_or_value,
|            ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(515,43): note: in instantiation of member function 'testing::internal::MatcherCastImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::Cast' requested here
515 |   return internal::MatcherCastImpl<T, M>::Cast(matcher);
|                                           ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(522,10): note: in instantiation of function template specialization 'testing::MatcherCast<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>' requested here
522 |   return MatcherCast<T>(polymorphic_matcher_or_value);
|          ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(1591,39): note: in instantiation of function template specialization 'testing::SafeMatcherCast<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>' requested here
1591 |     const Matcher<const T&> matcher = SafeMatcherCast<const T&>(matcher_);
|                                       ^
C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\STLExtrasTest.cpp(858,3): note: in instantiation of function template specialization 'testing::internal::PredicateFormatterFromMatcher<testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::operator()<llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>>>' requested here
858 |   EXPECT_THAT(map_range(Structs, &MapRangeStruct::getX), ElementsAre(1, 2, 3));
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(5495,3): note: expanded from macro 'EXPECT_THAT'
5495 |   EXPECT_PRED_FORMAT1(              \
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(109,3): note: expanded from macro 'EXPECT_PRED_FORMAT1'
109 |   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(100,28): note: expanded from macro 'GTEST_PRED_FORMAT1_'
100 |   GTEST_ASSERT_(pred_format(#v1, v1), on_failure)
|                            ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(79,52): note: expanded from macro 'GTEST_ASSERT_'
79 |   if (const ::testing::AssertionResult gtest_ar = (expression)) \
|                                                    ^
In file included from C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\STLExtrasTest.cpp:9:
C:\_work\llvm-project\llvm-project\llvm\include\llvm/ADT/STLExtras.h(350,42): error: no matching function for call to 'invoke'
350 |   ReferenceTy operator*() const { return std::invoke(F, *this->I); }
|                                          ^~~~~~~~~~~
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3467,53): note: in instantiation of member function 'llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>::operator*' requested here
3467 |         match = matchers_[exam_pos].MatchAndExplain(*it, &s);
|                                                     ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3399,3): note: in instantiation of member function 'testing::internal::ElementsAreMatcherImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &>::MatchAndExplain' requested here
3399 |   ElementsAreMatcherImpl(InputIter first, InputIter last) {
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(3797,35): note: in instantiation of function template specialization 'testing::internal::ElementsAreMatcherImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &>::ElementsAreMatcherImpl<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<testing::Matcher<const int &>>>>>' requested here
3797 |     return Matcher<Container>(new ElementsAreMatcherImpl<const Container&>(
|                                   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(373,12): note: in instantiation of function template specialization 'testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>::operator Matcher<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &>' requested here
373 |     return polymorphic_matcher_or_value;
|            ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(355,12): note: in instantiation of function template specialization 'testing::internal::MatcherCastImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::CastImpl<false>' requested here
355 |     return CastImpl(polymorphic_matcher_or_value,
|            ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(515,43): note: in instantiation of member function 'testing::internal::MatcherCastImpl<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::Cast' requested here
515 |   return internal::MatcherCastImpl<T, M>::Cast(matcher);
|                                           ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(522,10): note: in instantiation of function template specialization 'testing::MatcherCast<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>' requested here
522 |   return MatcherCast<T>(polymorphic_matcher_or_value);
|          ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(1591,39): note: in instantiation of function template specialization 'testing::SafeMatcherCast<const llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>> &, testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>' requested here
1591 |     const Matcher<const T&> matcher = SafeMatcherCast<const T&>(matcher_);
|                                       ^
C:\_work\llvm-project\llvm-project\llvm\unittests\ADT\STLExtrasTest.cpp(858,3): note: in instantiation of function template specialization 'testing::internal::PredicateFormatterFromMatcher<testing::internal::ElementsAreMatcher<std::tuple<int, int, int>>>::operator()<llvm::iterator_range<llvm::mapped_iterator<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MapRangeStruct>>>, int (MapRangeStruct::*)() const>>>' requested here
858 |   EXPECT_THAT(map_range(Structs, &MapRangeStruct::getX), ElementsAre(1, 2, 3));
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googlemock\include\gmock/gmock-matchers.h(5495,3): note: expanded from macro 'EXPECT_THAT'
5495 |   EXPECT_PRED_FORMAT1(              \
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(109,3): note: expanded from macro 'EXPECT_PRED_FORMAT1'
109 |   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
|   ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(100,28): note: expanded from macro 'GTEST_PRED_FORMAT1_'
100 |   GTEST_ASSERT_(pred_format(#v1, v1), on_failure)
|                            ^
C:\_work\llvm-project\llvm-project\third-party\unittest\googletest\include\gtest/gtest_pred_impl.h(79,52): note: expanded from macro 'GTEST_ASSERT_'
79 |   if (const ::testing::AssertionResult gtest_ar = (expression)) \
|                                                    ^
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1528,19): note: candidate template ignored: substitution failure [with _Callable = const callable_detail::Callable<int (MapRangeStruct::*)() const> &, _Ty1 = value_type &, _Types2 = <>]: no matching function for call to '_Call'
1528 | _CONSTEXPR17 auto invoke(_Callable&& _Obj, _Ty1&& _Arg1, _Types2&&... _Args2) noexcept(
|                   ^
1529 |     noexcept(_Invoker1<_Callable, _Ty1>::_Call(
1530 |         static_cast<_Callable&&>(_Obj), static_cast<_Ty1&&>(_Arg1), static_cast<_Types2&&>(_Args2)...)))
1531 |     -> decltype(_Invoker1<_Callable, _Ty1>::_Call(
|                 ~~~~~~~~~
C:\BuildTools\VC\Tools\MSVC\14.29.30133\include\type_traits(1522,19): note: candidate function template not viable: requires single argument '_Obj', but 2 arguments were provided
1522 | _CONSTEXPR17 auto invoke(_Callable&& _Obj) noexcept(noexcept(static_cast<_Callable&&>(_Obj)()))
|                   ^      ~~~~~~~~~~~~~~~~
4 errors generated.
```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/181154


More information about the llvm-commits mailing list