【发布时间】:2020-08-13 21:04:07
【问题描述】:
在我想要的类型直接依赖于包中的类型的情况下,扩展参数包的语法是什么?
例如:
template <typename T>
struct foo
{
typedef T value_type;
};
template <typename ... T>
struct aggregate_of_foo
{
typedef std::tuple<foo<T>::value_type...> tuple; // MSVC compiler error here
};
【问题讨论】:
-
你不想
typedef std::tuple<typename foo<T>::value_type...> tuple; -
无关:不能只是
using tuples = std::tuple<T...>;??不明白为什么需要foo的value_type: -
@JeJo 在这个人为的例子中,是的。但我的实际代码更复杂,不遵循
foo<T>::value_type与T相同的模式。
标签: c++ c++11 templates variadic-templates class-template