【发布时间】:2016-02-26 12:16:44
【问题描述】:
假设我有 3 个变量:
vector<int> vec(3);
int stat[3];
auto dyn = make_unique<int[]>(3);
我想创建一个模板化函数来接受所有这些,并且有一个包含类型的成员变量(在我的示例中为int)。我有一个这样的模板化函数:
template <typename T>
void foo(T& X) { vector<type> bar; }
我将把每个容器传递给这个函数。我需要一种方法来找到这个type,这对他们每个人都有效。我显然可以通过专门化模板化函数来做到这一点,但我希望有人可以为我提供一个更有说服力的解决方案。
【问题讨论】:
-
你打算如何使用这个功能?你会用作为参数传递的容器填充函数内部的向量
bar,然后对其进行一些处理吗?为什么不创建三个填充向量的特化,然后调用另一个函数来完成所有实际工作?试图将所有不同的情况塞进一个函数中似乎是个好主意,但实际上它很可能只是一个无法维护的混乱。 -
@JoachimPileborg 老实说,这纯粹是学术性的。我问了一个关于通过将这些容器传递到模板中来初始化这些容器的问题:stackoverflow.com/q/35636160/2642059 答案很短,因为我在构造后找不到
dyn的大小,所以我无法在模板化函数中初始化它们,比如那。但是到那时我已经在寻找类型方面投入了一些工作,但没有找到适用于所有三种情况的任何东西,所以我只是想看看是否真的有解决方案。
标签: c++ vector types containers metaprogramming