gpt4 book ai didi

c++ - VC++2013 中嵌套可变参数模板结构的别名

转载 作者:搜寻专家 更新时间:2023-10-31 01:38:07 26 4
gpt4 key购买 nike

对于模板化的嵌套结构,我可以像下面这样定义别名:

template<typename T>struct Struct
{
Struct(T value){}

template<typename T1> struct Nested
{
Nested(T1 value){}
};
};
template<typename T, typename T1>using NameT = struct Struct<T>::Nested<T1>;
using Name = NameT<int, double>; // Alias for a certain instance

有人可以给我提示如何为可变参数声明别名吗?

template<typename... T>struct Struct
{
Struct(T... value){}

template<typename T1> struct Nested
{
Nested(T1 value){}
};
};
template<typename... T, typename T1>using NameT = struct Struct<T...>::Nested<T1>; // This seems ok
using Name = NameT<int, double>; // error C976: 'Name': too few template arguments

最佳答案

这会起作用:

template<typename T1, typename... T>using NameT = 
typename Struct<T...>::template Nested<T1>; // This seems ok
^^^^^^^^ ^^^^^^^^
using Name = NameT<int, double>;

请注意参数包必须在末尾,因此定义略有改变。

LIVE DEMO

关于c++ - VC++2013 中嵌套可变参数模板结构的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33254186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com