【发布时间】:2021-10-29 15:30:45
【问题描述】:
我正在尝试创建一个函数模板,它返回包含在它自己类型的数组中的给定参数:
template<typename T>
auto encArr(T obj){T arr[1] = {obj};} // For instance - if obj is an integer it should return
// int arr[1] = {obj};
// In general, it should return
// T arr[1] = {obj};
但是当我尝试使用该函数时,我的编译器会反击:
int test = 10;
int test[1] = encArr(huh); // error: array must be initialized with a brace-enclosed initializer
也许我只是以错误的方式解决这个问题。然而,我没有使用 std::vector 非常重要,我想使用标准 C++ 数组。非常感谢您的帮助!
【问题讨论】:
-
你不能。可以做的事情:使用
std::array<int, 1>,像使用一个元素的数组一样使用[&test, &test + 1),直接使用数组初始化器并跳过该函数。
标签: c++ arrays function templates