[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).
This commit is contained in:
Lang Hames 2022-08-26 15:32:17 -07:00
parent 134986a720
commit faabefe3c8
1 changed files with 10 additions and 0 deletions

View File

@ -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 <class Ty> 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