【发布时间】:2012-12-27 15:23:37
【问题描述】:
考虑以下类:
template<class T, int...> struct MyClass1 {};
template<class T, unsigned int...> struct MyClass2 {};
template<class T, long long int...> struct MyClass3 {};
template<class T, unsigned long long int...> struct MyClass4 {};
我无法修改这些类。
是否可以编写一个帮助类或函数或其他东西,它将返回可变参数列表的类型:
something<MyClass1>::type (-> int)
something<MyClass2>::type (-> unsigned int)
something<MyClass3>::type (-> long long int)
something<MyClass4>::type (-> unsigned long long int)
如果可变参数列表为空,size_t?
【问题讨论】:
-
你的意思是什么可变参数列表?如果您通过
MyClassN,则还没有列表。列表只有一个模式,其实例化可能为空,也可能不为空。你的意思是“和 size_t 如果没有参数包”? -
something<MyClassN>::type可能会调用另一个结构,例如:template<template<typename, Kind...> class T>。但是如何推导出Kind...?
标签: c++ c++11 templates metaprogramming template-argument-deduction