[llvm] [LLVM][Support] Add getTrailingObjects() for single trailing type (PR #138970)
Florian Mayer via llvm-commits
llvm-commits at lists.llvm.org
Thu May 8 17:11:06 PDT 2025
================
@@ -301,6 +302,41 @@ class TrailingObjects : private trailing_objects_internal::TrailingObjectsImpl<
static_cast<BaseTy *>(this), TrailingObjectsBase::OverloadToken<T>());
}
+ // getTrailingObjects() specialization for a single trailing type.
+ using FirstTrailingType =
+ typename std::tuple_element_t<0, std::tuple<TrailingTys...>>;
+
+ const FirstTrailingType *getTrailingObjects() const {
+ static_assert(sizeof...(TrailingTys) == 1,
+ "Can use non-templated getTrailingObjects() only when there "
+ "is a single trailing type");
+ return getTrailingObjects<FirstTrailingType>();
+ }
+
+ FirstTrailingType *getTrailingObjects() {
+ static_assert(sizeof...(TrailingTys) == 1,
+ "Can use non-templated getTrailingObjects() only when there "
+ "is a single trailing type");
+ return getTrailingObjects<FirstTrailingType>();
+ }
+
+ // Functions that return the trailing objects as ArrayRefs.
+ template <typename T> MutableArrayRef<T> getTrailingObjects(size_t N) {
+ return {getTrailingObjects<T>(), N};
----------------
fmayer wrote:
Ah, can you please use a more explicit constructor? I was confused for a second and thought we are constructing an array of two elements.
https://github.com/llvm/llvm-project/pull/138970
More information about the llvm-commits
mailing list