diff options
author | kosak <kosak@google.com> | 2015-07-19 22:21:58 +0000 |
---|---|---|
committer | kosak <kosak@google.com> | 2015-07-19 22:21:58 +0000 |
commit | 9e38d77f65eb35111701670608d8da223645e7e7 (patch) | |
tree | a97b00b04c0f1850582d09a12a7c1d2485a1039f | |
parent | 7d7beaa155717adafb783a52b6dfa37fae15df3f (diff) | |
download | googletest-9e38d77f65eb35111701670608d8da223645e7e7.tar.gz googletest-9e38d77f65eb35111701670608d8da223645e7e7.tar.bz2 googletest-9e38d77f65eb35111701670608d8da223645e7e7.zip |
Allow the single-arg Values() overload to to conversions, just like every other
overload.
-rw-r--r-- | include/gtest/internal/gtest-param-util-generated.h | 5 | ||||
-rw-r--r-- | include/gtest/internal/gtest-param-util-generated.h.pump | 19 |
2 files changed, 6 insertions, 18 deletions
diff --git a/include/gtest/internal/gtest-param-util-generated.h b/include/gtest/internal/gtest-param-util-generated.h index 6dbaf4b7..4d1d81d2 100644 --- a/include/gtest/internal/gtest-param-util-generated.h +++ b/include/gtest/internal/gtest-param-util-generated.h @@ -79,7 +79,10 @@ class ValueArray1 { explicit ValueArray1(T1 v1) : v1_(v1) {} template <typename T> - operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); } + operator ParamGenerator<T>() const { + const T array[] = {static_cast<T>(v1_)}; + return ValuesIn(array); + } private: // No implementation - assignment is unsupported. diff --git a/include/gtest/internal/gtest-param-util-generated.h.pump b/include/gtest/internal/gtest-param-util-generated.h.pump index 801a2fc7..5c7c47af 100644 --- a/include/gtest/internal/gtest-param-util-generated.h.pump +++ b/include/gtest/internal/gtest-param-util-generated.h.pump @@ -72,29 +72,14 @@ internal::ParamGenerator<typename Container::value_type> ValuesIn( namespace internal { // Used in the Values() function to provide polymorphic capabilities. -template <typename T1> -class ValueArray1 { - public: - explicit ValueArray1(T1 v1) : v1_(v1) {} - - template <typename T> - operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); } - - private: - // No implementation - assignment is unsupported. - void operator=(const ValueArray1& other); - - const T1 v1_; -}; - -$range i 2..n +$range i 1..n $for i [[ $range j 1..i template <$for j, [[typename T$j]]> class ValueArray$i { public: - ValueArray$i($for j, [[T$j v$j]]) : $for j, [[v$(j)_(v$j)]] {} + $if i==1 [[explicit ]]ValueArray$i($for j, [[T$j v$j]]) : $for j, [[v$(j)_(v$j)]] {} template <typename T> operator ParamGenerator<T>() const { |