[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