【发布时间】:2016-01-22 01:06:53
【问题描述】:
我正在尝试扩展通过模板模板传递的参数列表。第一个示例有效,第二个示例无效。我正在寻找的结果是,在第二个示例中,cWapperObject.cMemberVariable.cTuple 的类型为 std::tuple<double, float, short, int>。我怎样才能做到这一点? (请不要在 cmets 或答案中提及库提升)。
示例 1:
#include <tuple>
template<class ... TS> class CObject {
std::tuple<TS ...> cTuple;
};
template<template<typename ... TS> class TMPL_CLASS_T>
class CWrapperObject {
TMPL_CLASS_T<double, float, short> cMemberVariable;
};
int main() {
CWrapperObject<CObject> cWapperObject;
return 0;
}
示例 2:
#include <tuple>
template<class ... TS> class CObject {
std::tuple<TS ...> cTuple;
};
template<template<typename ... TS> class TMPL_CLASS_T>
class CWrapperObject {
TMPL_CLASS_T<double, float, TS ...> cMemberVariable;
};
int main() {
CWrapperObject<CObject<short, int>> cWapperObject;
return 0;
}
【问题讨论】:
-
我使用的是 gcc 版本 4.9.2,报告的错误是 main.cc:9:33: error: 'TS' was not declared in this scope
标签: c++ templates c++11 variadic-templates template-templates