From: Lang Hames Date: Fri, 26 Aug 2022 22:32:17 +0000 (-0700) Subject: [ORC-RT] Add a std::identity substitute. X-Git-Tag: upstream/17.0.6~35197 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=faabefe3c8a4755249e75cf8e2d3726460887946;p=platform%2Fupstream%2Fllvm.git [ORC-RT] Add a std::identity substitute. The __orc_rt::identity utility is intended to serve as a substitute for c++20's std::identity until we can use the latter (when LLVM moves to c++20). --- diff --git a/compiler-rt/lib/orc/stl_extras.h b/compiler-rt/lib/orc/stl_extras.h index ad7286e..e4f8bf0 100644 --- a/compiler-rt/lib/orc/stl_extras.h +++ b/compiler-rt/lib/orc/stl_extras.h @@ -41,6 +41,16 @@ decltype(auto) apply_tuple(F &&f, Tuple &&t) { Indices{}); } +/// Substitute for std::identity. +/// Switch to std::identity once we can use c++20. +template struct identity { + using is_transparent = void; + using argument_type = Ty; + + Ty &operator()(Ty &self) const { return self; } + const Ty &operator()(const Ty &self) const { return self; } +}; + } // namespace __orc_rt #endif // ORC_RT_STL_EXTRAS