mirror of
https://github.com/github/codeql.git
synced 2025-12-21 11:16:30 +01:00
`std::result_of` was removed in C++20, though the actual removal from the STL library implementations seems to depend on the version. For example using xcode 14.2 one gets away with a deprecation warning, but xcode 14.3 will fail. As Swift 5.8.1 is still compiled with C++14, we cannot replace `std::result_of` with `std::invoke_result` in the prebuilding patches just yet, but we can do that for the extractor itself, patching the prebuilt package.
31 lines
1.4 KiB
Diff
31 lines
1.4 KiB
Diff
`std::result_of` was removed in C++20, but is still used in the Swift headers. We can't
|
|
remove it from there before prebuilding, as that is still done with C++14, but we can
|
|
replace it with `std::invoke_result` for compiling the extractor.
|
|
|
|
diff --git a/include/swift/Basic/RelativePointer.h b/include/swift/Basic/RelativePointer.h
|
|
index 73f91262afa..bdaa304c804 100644
|
|
--- a/include/swift/Basic/RelativePointer.h
|
|
+++ b/include/swift/Basic/RelativePointer.h
|
|
@@ -551,7 +551,7 @@ public:
|
|
}
|
|
|
|
template <typename... ArgTy>
|
|
- typename std::result_of<T *(ArgTy...)>::type operator()(ArgTy... arg) const {
|
|
+ typename std::invoke_result<T*, ArgTy...>::type operator()(ArgTy... arg) const {
|
|
#if SWIFT_PTRAUTH
|
|
void *ptr = this->super::getWithoutCast();
|
|
return reinterpret_cast<T *>(ptrauth_sign_unauthenticated(
|
|
diff --git a/include/swift/Basic/STLExtras.h b/include/swift/Basic/STLExtras.h
|
|
index 7fa3d0c8890..6bc891a9b63 100644
|
|
--- a/include/swift/Basic/STLExtras.h
|
|
+++ b/include/swift/Basic/STLExtras.h
|
|
@@ -405,7 +405,7 @@ class OptionalTransformIterator {
|
|
typename std::iterator_traits<Iterator>::reference;
|
|
|
|
using ResultReference =
|
|
- typename std::result_of<OptionalTransform(UnderlyingReference)>::type;
|
|
+ typename std::invoke_result<OptionalTransform, UnderlyingReference>::type;
|
|
|
|
public:
|
|
/// Used to indicate when the current iterator has already been
|