在模板内插入文字
Insert type inside template
我想定义模板
template<template<typename...> class TT, size_t n, class T, class... U>
struct insert;
在模板TT
内的参数之间的第 n
位插入类型 T
U...
。所以它应该以这样的方式工作,例如 insert<std::tuple, 2, char, int,int,int,int>
扩展到std::tuple<int,int, char, int,int>
,即 char
插入元组参数的中间。
实施如下
template<template<typename...> class TT, size_t n, class T, class U1, class... U>
struct insert<TT, n, T, U1, U...>
{
template<class...V>
using templ =
/* template<typename...> */
typename
insert
<
typename insert<TT, n - 1, T, U...>::templ,
0,
U1
>::templ < V... > ; // <-- error C2988: unrecognizable template
// declaration/definition
using type = typename templ < > ;
};
template<template<typename...> class TT, class T, class... U>
struct insert < TT, 0, T, U... >
{
template<class...V>
using templ = TT<T, U..., V...>;
using type = typename templ < > ;
};
但编译失败。感谢您的帮助。
template<template<typename...> class TT, class T, size_t n, class... U>
struct insert;
template<template<typename...> class TT, class T, class U1, class... U>
struct insert <TT, T, 0, U1, U...>
{
using type = TT<T, U1, U...>;
};
template<template<typename...> class TT, class T>
struct insert <TT, T, 0>
{
using type = TT<T>;
};
template<template<typename...> class TT, class T, size_t n, class U1, class... U>
struct insert<TT, T, n, U1, U...>
{
template <typename... X> using templ = TT<U1, X...>;
using type = typename insert<templ, T, n-1, U...>::type;
};
测试:
template <typename t1, typename t2, typename t3, typename t4>
struct test {};
using result = insert<test, int, 2, double, char, void*>::type;
int main()
{
std::string s = typeid(result).name();
int status;
s = abi::__cxa_demangle(s.c_str(), NULL, NULL, &status);
std::cout << s << std::endl;
}
演示。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- constexpr 函数中的非文字(通过 std::is_constant_evaluated)
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 如何将结构插入到集合中并打印集合的成员
- C++json插入数组
- Visual Studio 2019:插入多个C++风格的单行注释
- nlohmann-json将一个数组插入到另一个数组中
- 有效地使用std::unordered_map来插入或增加键的值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 正在插入动态数组
- 插入或删除时获取usb的dos_name
- 如何使用字符串文字作为宏参数
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 构造<int>具有 2 个字符串文字的向量
- 将数字打印成文字
- 在模板内插入文字