diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2011-12-17 10:20:15 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2011-12-17 10:20:15 +0000 |
commit | 1243cdda6330139c55e8ecc033fcb559581e6870 (patch) | |
tree | 642e2ae797a900b18421527168289b77cadb5f48 | |
parent | 93ca12299f3210e300c9ac4f0fd8d6ce5b7d7d60 (diff) | |
download | external_llvm-1243cdda6330139c55e8ecc033fcb559581e6870.zip external_llvm-1243cdda6330139c55e8ecc033fcb559581e6870.tar.gz external_llvm-1243cdda6330139c55e8ecc033fcb559581e6870.tar.bz2 |
As Doug pointed out (and I really should know), it is perfectly easy to
make VariadicFunction actually be trivial. Do so, and also make it look
more like your standard trivial functor by making it a struct with no
access specifiers. The unit test is updated to initialize its functors
properly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146827 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/ADT/VariadicFunction.h | 20 | ||||
-rw-r--r-- | unittests/ADT/VariadicFunctionTest.cpp | 8 |
2 files changed, 8 insertions, 20 deletions
diff --git a/include/llvm/ADT/VariadicFunction.h b/include/llvm/ADT/VariadicFunction.h index 00ae347..a9a0dc6 100644 --- a/include/llvm/ADT/VariadicFunction.h +++ b/include/llvm/ADT/VariadicFunction.h @@ -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 *>()); } @@ -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 *>()); } @@ -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 *>()); } @@ -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 *>()); } diff --git a/unittests/ADT/VariadicFunctionTest.cpp b/unittests/ADT/VariadicFunctionTest.cpp index 3cd63d2..cde3120 100644 --- a/unittests/ADT/VariadicFunctionTest.cpp +++ b/unittests/ADT/VariadicFunctionTest.cpp @@ -22,7 +22,7 @@ std::string StringCatImpl(ArrayRef<const std::string *> Args) { S += *Args[i]; return S; } -const VariadicFunction<std::string, std::string, StringCatImpl> StringCat; +const VariadicFunction<std::string, std::string, StringCatImpl> StringCat = {}; TEST(VariadicFunctionTest, WorksForClassTypes) { EXPECT_EQ("", StringCat()); @@ -45,7 +45,7 @@ long SumImpl(ArrayRef<const int *> Args) { Result += *Args[i]; return Result; } -const VariadicFunction<long, int, SumImpl> Sum; +const VariadicFunction<long, int, SumImpl> Sum = {}; TEST(VariadicFunctionTest, WorksForPrimitiveTypes) { EXPECT_EQ(0, Sum()); @@ -65,7 +65,7 @@ int StringAppendImpl(std::string *Dest, ArrayRef<const std::string *> Args) { return Chars; } const VariadicFunction1<int, std::string *, std::string, - StringAppendImpl> StringAppend; + StringAppendImpl> StringAppend = {}; TEST(VariadicFunction1Test, Works) { std::string S0("hi"); @@ -93,7 +93,7 @@ void CountInRangeImpl(int *NumInRange, int Low, int High, ++(*NumInRange); } const VariadicFunction3<void, int *, int, int, int, - CountInRangeImpl> CountInRange; + CountInRangeImpl> CountInRange = {}; TEST(VariadicFunction3Test, Works) { int N = -1; |