[llvm] 77eac32 - [ADT] Make `llvm::identity` a transparent function object
Joe Loser via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 25 20:07:46 PDT 2022
Author: Joe Loser
Date: 2022-08-25T21:06:42-06:00
New Revision: 77eac327167c696cbec4c7f235e6b00179ea7358
URL: https://github.com/llvm/llvm-project/commit/77eac327167c696cbec4c7f235e6b00179ea7358
DIFF: https://github.com/llvm/llvm-project/commit/77eac327167c696cbec4c7f235e6b00179ea7358.diff
LOG: [ADT] Make `llvm::identity` a transparent function object
`llvm::identity` is similar to `std::identity` from C++20, but one surprising
thing is that `llvm::identity` is not a transparent function object. Add the
`is_transparent` type alias to denote it can be used as a transparent function
object.
Differential Revision: https://reviews.llvm.org/D132628
Added:
Modified:
llvm/include/llvm/ADT/identity.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/ADT/identity.h b/llvm/include/llvm/ADT/identity.h
index f07bb6fb39f62..7309032362077 100644
--- a/llvm/include/llvm/ADT/identity.h
+++ b/llvm/include/llvm/ADT/identity.h
@@ -18,7 +18,9 @@
namespace llvm {
+// Similar to `std::identity` from C++20.
template <class Ty> struct identity {
+ using is_transparent = void;
using argument_type = Ty;
Ty &operator()(Ty &self) const {
More information about the llvm-commits
mailing list