c++ - 如何在现代 C++ 中基于另一组可变参数模板参数来表示可变参数模板类型?

标签 c++ c++11 c++14 c++17

假设我有以下可变参数模板结构:

template <class... T> 
struct Example {};

现在我想定义一个模板函数:

template<class... S>
??? f() {
    return Example<???>
}

Example<>的特化所在取决于模板参数 Sf .

为了更具体(和简单),现在我只想返回 Example<int, ...,int> ,其中 int 的数量是参数包的大小S .

如何在现代 C++(即 C++11/14/17)中完成?

更一般地说,有没有办法在编译时根据模板参数定义函数?

最佳答案

您可以创建映射类型:

// Maps some type T to the type U.
template <typename T, typename U>
using Map = U;

您可以按如下方式使用:

template<class... S>
Example<Map<S, int>...> f() {
    return Example<Map<S, int>...>{};
}

关于c++ - 如何在现代 C++ 中基于另一组可变参数模板参数来表示可变参数模板类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43295622/

相关文章:

c++ - 性能 : Overloaded [] and a call to a function

c++ - 在 C++ 的类构造函数中列出初始化

c++ - Resharper 是否以硬编码方式识别 std::make_unique?

c++ - 在 C++ 中保存指向迭代器的指针是否安全?

C++ 结构体与类在内存方面的比较

c++ - 在字符串中搜索十六进制子串

c++ - 从 unique_ptr 初始化 unique_ptr const 引用

C++0x unique_ptr 误解?

c++ - 在包含共享指针列表的共享指针后面复制对象

c++ - 通过覆盖 C 标准库调用来测量堆使用情况