我需要声明一个可以存储不同类型容器的类。即如果它可以处理std :: bitset和std :: array将会很好。 但是,这两个类需要不同的模板参数... 使用模板化模板类和可变模板来声明这种类是否可能(以及可能如何)?声明来自模板模板类和可变参数模板的“容器”对象
实施例(但错误):
template<template <typename..., std::size_t> class Container,
std::size_t N,
typename... Args>
class Base_Class
{
...
Container<Args..., N/2> container;
};
编译器抱怨N/2不是一个类型。显然,对于std :: array和std :: bitset,我需要size是最后一个模板参数......是否有可能编写这个疯狂?
谢谢!
编辑: 就我而言,主要问题是可变参数模板只能在右侧展开,因此可变参数必须是最后一个参数。任何人都知道是否有计划允许在C++ 17中使用以下语法?
template<typename... Args, typename T>
struct A
{};
哪种编译? – Walter 2015-04-03 09:57:10
它给g ++和clang都带来错误(显然使用-std = C++ 11/14参数) – dodomorandi 2015-04-03 10:04:03