C++ 类型名和标量常量的可变模板
我正在尝试实现一个通用类模板,该模板将其模板参数转发给另一个类,如下所示:C++ 类型名和标量常量的可变模板,c++,templates,variadic-templates,C++,Templates,Variadic Templates,我正在尝试实现一个通用类模板,该模板将其模板参数转发给另一个类,如下所示: template <typename... Args> class A : public B<Args...> { ... template <size_t N> class B { ... template <typename T, size_t N> class B { ... 模板 A类:公共B类 { ... 问题是B可以有如下标量常量
template <typename... Args>
class A : public B<Args...>
{
...
template <size_t N>
class B
{
...
template <typename T, size_t N>
class B
{
...
模板
A类:公共B类
{
...
问题是B可以有如下标量常量模板:
template <typename... Args>
class A : public B<Args...>
{
...
template <size_t N>
class B
{
...
template <typename T, size_t N>
class B
{
...
模板
B类
{
...
甚至像这样:
template <typename... Args>
class A : public B<Args...>
{
...
template <size_t N>
class B
{
...
template <typename T, size_t N>
class B
{
...
模板
B类
{
...
那么,有没有办法接受混合的类型名和标量常量作为可变模板参数呢?您可以将值嵌入到类型中。如果我没有记错的话,这是boost长期使用的一种技术,并作为
std::integral_constant
添加到C++11的标准库中(表明它的有用性)
有了C++17,事情变得更简单了
template<auto val>
struct constant : std::integral_constant<decltype(val), val> {};
这似乎是目前标准的最佳解决方案,谢谢。