Fix broken ipo_ext_iterator constructors.
[oota-llvm.git] / include / llvm / ADT / VariadicFunction.h
index 08c9697ffc164820a9a3125d31e9d18243f856b6..a9a0dc6b6e20b4851e5f542d189676b15db9486e 100644 (file)
@@ -103,10 +103,7 @@ namespace llvm {
 /// fixed leading arguments and up-to 32 optional arguments.
 template <typename ResultT, typename ArgT,
           ResultT (*Func)(ArrayRef<const ArgT *>)>
-class VariadicFunction {
- public:
-  VariadicFunction() {}
-
+struct VariadicFunction {
   ResultT operator()() const {
     return Func(ArrayRef<const ArgT *>());
   }
@@ -114,7 +111,7 @@ class VariadicFunction {
 #define LLVM_DEFINE_OVERLOAD(N) \
   ResultT operator()(LLVM_COMMA_JOIN ## N(const ArgT &A)) const { \
     const ArgT *const Args[] = { LLVM_COMMA_JOIN ## N(&A) }; \
-    return Func(Args); \
+    return Func(makeArrayRef(Args)); \
   }
   LLVM_DEFINE_OVERLOAD(1)
   LLVM_DEFINE_OVERLOAD(2)
@@ -153,10 +150,7 @@ class VariadicFunction {
 
 template <typename ResultT, typename Param0T, typename ArgT,
           ResultT (*Func)(Param0T, ArrayRef<const ArgT *>)>
-class VariadicFunction1 {
- public:
-  VariadicFunction1() {}
-
+struct VariadicFunction1 {
   ResultT operator()(Param0T P0) const {
     return Func(P0, ArrayRef<const ArgT *>());
   }
@@ -164,7 +158,7 @@ class VariadicFunction1 {
 #define LLVM_DEFINE_OVERLOAD(N) \
   ResultT operator()(Param0T P0, LLVM_COMMA_JOIN ## N(const ArgT &A)) const { \
     const ArgT *const Args[] = { LLVM_COMMA_JOIN ## N(&A) }; \
-    return Func(P0, Args); \
+    return Func(P0, makeArrayRef(Args)); \
   }
   LLVM_DEFINE_OVERLOAD(1)
   LLVM_DEFINE_OVERLOAD(2)
@@ -203,10 +197,7 @@ class VariadicFunction1 {
 
 template <typename ResultT, typename Param0T, typename Param1T, typename ArgT,
           ResultT (*Func)(Param0T, Param1T, ArrayRef<const ArgT *>)>
-class VariadicFunction2 {
- public:
-  VariadicFunction2() {}
-
+struct VariadicFunction2 {
   ResultT operator()(Param0T P0, Param1T P1) const {
     return Func(P0, P1, ArrayRef<const ArgT *>());
   }
@@ -215,7 +206,7 @@ class VariadicFunction2 {
   ResultT operator()(Param0T P0, Param1T P1, \
                      LLVM_COMMA_JOIN ## N(const ArgT &A)) const { \
     const ArgT *const Args[] = { LLVM_COMMA_JOIN ## N(&A) }; \
-    return Func(P0, P1, Args); \
+    return Func(P0, P1, makeAraryRef(Args)); \
   }
   LLVM_DEFINE_OVERLOAD(1)
   LLVM_DEFINE_OVERLOAD(2)
@@ -255,10 +246,7 @@ class VariadicFunction2 {
 template <typename ResultT, typename Param0T, typename Param1T,
           typename Param2T, typename ArgT,
           ResultT (*Func)(Param0T, Param1T, Param2T, ArrayRef<const ArgT *>)>
-class VariadicFunction3 {
- public:
-  VariadicFunction3() {}
-
+struct VariadicFunction3 {
   ResultT operator()(Param0T P0, Param1T P1, Param2T P2) const {
     return Func(P0, P1, P2, ArrayRef<const ArgT *>());
   }
@@ -267,7 +255,7 @@ class VariadicFunction3 {
   ResultT operator()(Param0T P0, Param1T P1, Param2T P2, \
                      LLVM_COMMA_JOIN ## N(const ArgT &A)) const { \
     const ArgT *const Args[] = { LLVM_COMMA_JOIN ## N(&A) }; \
-    return Func(P0, P1, P2, Args); \
+    return Func(P0, P1, P2, makeArrayRef(Args)); \
   }
   LLVM_DEFINE_OVERLOAD(1)
   LLVM_DEFINE_OVERLOAD(2)