gpt4 book ai didi

c++ - 如何确定 C++ 中实例化容器模板的容器模板类型

转载 作者:行者123 更新时间:2023-11-30 02:35:59 26 4
gpt4 key购买 nike

我需要 collection_traits,我可以用它来做类似的事情

typename collection_traits<std::vector<int>>::template type<double> double_vector;

现在 double_vector 的类型是 std::vector<double> .

所以我想要的是获得相同的容器,但具有不同的值类型。

这可能吗?

最佳答案

Variadic template会帮你的https://ideone.com/lbS2W3

using namespace std;

template<typename... T>
struct collection_traits { using template_type = void; };

template<template<typename...> class C, typename... Args>
struct collection_traits<C<Args...> > {
template<typename... Subst>
using template_type = C<Subst...>;
};

int main(int argc, char *argv[]) {
collection_traits<vector<int>>::template_type<double> t;

cout << typeid(t).name() << endl;

t.push_back(123.5);
cout << t.front() << endl;

}

关于c++ - 如何确定 C++ 中实例化容器模板的容器模板类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33268855/

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