如何检查::testing::Types模板的大小?



我正在创建一个TYPED_TEstrongUITE,我想获得::testing::Types中的元素计数。原因是执行一个静态断言,这样我就可以确保我的测试是与源代码同步的。

在std::tuple后面是可能的:

int count = tuple_size<decltype(mytuple)>::value

是否有可能与gtests的testing::Types做同样的事情?或者在编译时将std::tuple转换为test::Types ?

是。你可以这样做:

template<typename...>
struct CountTypes;
template<typename... Args>
struct CountTypes<::testing::Types<Args...>> : std::integral_constant<int, sizeof...(Args)> {};
template<typename...>
struct ConvertTypes;
template<typename... Args>
struct ConvertTypes<::testing::Types<Args...>> { using type = std::tuple<Args...>;};
int main()
{
using MyTypes = ::testing::Types<char, int>;
static_assert(CountTypes<MyTypes>::value == 2);
static_assert(std::is_same_v<ConvertTypes<MyTypes>::type, std::tuple<char, int>>);
std::cout << CountTypes<MyTypes>::value << std::endl;
}

相关内容

  • 没有找到相关文章

最新更新