[PATCH] D138375: [ADT] Simplify determining size for joining items

Joe Loser via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Nov 19 21:21:43 PST 2022


jloser created this revision.
jloser added reviewers: MaskRay, kazu, dblaikie, scott.linder.
Herald added a subscriber: StephenFan.
Herald added a project: All.
jloser requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

`join_items_size` uses recursive function templates for determining the total
items size.  Instead, use fold expressions since we have C++17 available now.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D138375

Files:
  llvm/include/llvm/ADT/StringExtras.h


Index: llvm/include/llvm/ADT/StringExtras.h
===================================================================
--- llvm/include/llvm/ADT/StringExtras.h
+++ llvm/include/llvm/ADT/StringExtras.h
@@ -451,14 +451,8 @@
   return Str.size();
 }
 
-inline size_t join_items_size() { return 0; }
-
-template <typename A1> inline size_t join_items_size(const A1 &A) {
-  return join_one_item_size(A);
-}
-template <typename A1, typename... Args>
-inline size_t join_items_size(const A1 &A, Args &&... Items) {
-  return join_one_item_size(A) + join_items_size(std::forward<Args>(Items)...);
+template <typename... Args> inline size_t join_items_size(Args &&...Items) {
+  return (0 + ... + join_one_item_size(std::forward<Args>(Items)));
 }
 
 } // end namespace detail


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D138375.476728.patch
Type: text/x-patch
Size: 762 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221120/b9bc7c78/attachment.bin>


More information about the llvm-commits mailing list