[clang] [libc] Add invoke / invoke_result type traits (PR #65750)

Guillaume Chatelet via cfe-commits cfe-commits at lists.llvm.org
Thu Sep 14 05:00:26 PDT 2023


================
@@ -0,0 +1,26 @@
+//===-- invoke_result type_traits -------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+#ifndef LLVM_LIBC_SRC_SUPPORT_CPP_TYPE_TRAITS_INVOKE_RESULT_H
+#define LLVM_LIBC_SRC_SUPPORT_CPP_TYPE_TRAITS_INVOKE_RESULT_H
+
+#include "src/__support/CPP/type_traits/invoke.h"
+#include "src/__support/CPP/utility/declval.h"
+
+namespace __llvm_libc::cpp {
+
+template <class F, class... Args> struct invoke_result {
+  using type =
+      decltype(cpp::invoke(cpp::declval<F>(), cpp::declval<Args>()...));
----------------
gchatelet wrote:

FTR this has been discussed off line.

https://github.com/llvm/llvm-project/pull/65750


More information about the cfe-commits mailing list