【发布时间】:2017-08-29 11:58:03
【问题描述】:
我试图从传递给其类的构造函数的参数类型中推断出成员变量的类型。类的构造函数(一个 PublishSubscribe 类)接收两个参数,每个参数代表可变参数类型(一个可变参数包用于发送,一个用于接收)。
我正在尝试使用的代码如下:
#include <tuple>
template <typename... Types>
struct TopicTypes {};
TopicTypes<int> type_subscribe_topics;
TopicTypes<int,double> type_publish_topics;
template <typename... TReceives>
class PublishSubscribe
{
public:
template < typename... TReceives, template <typename...> class TR,
typename... TSends, template <typename...> class TS>
PublishSubscribe(const TR<TReceives...>&,
const TS<TSends...>&){}
private:
std::tuple<TReceives...> member_;
};
class UserClass : public PublishSubscribe{
public:
UserClass()
: PublishSubscribe(
type_subscribe_topics,
type_publish_topics
){}
};
int main()
{
return 0;
}
我收到以下编译错误:
variadic3.cpp:13:17: error: declaration of 'class ... TReceives'
template < typename... TReceives, template <typename...> class TR,
^
variadic3.cpp:9:11: error: shadows template parm 'class ... TReceives'
template <typename ... TReceives>
如何使用 type_subscribe_topics 类型来模板化 PublishSubscribe 类?我需要PublishSubscribe<magic(decltype(type_subscribe_topics))>,在这种特殊情况下默认为PublishSubscribe<int>..
非常感谢!
【问题讨论】:
标签: c++ c++14 variadic-templates