C 错误将参数重新发送到模板函数(矩阵参数)
C++ ERROR resending parameters to template function (matrix argument)
为什么这在C 14中不起作用?这是我问题的简化示例。
#include <iostream>
using namespace std;
template <typename type, size_t size1, size_t size2>
void f1(type (&matrix)[size1][size2]){
}
void f2(size_t &size1, size_t &size2){
double matrix[size1][size2];
f1(matrix);
}
int main()
{
size_t size1=100;
size_t size2=200;
f2(size1,size2);
return 0;
}
main.cpp:13:14:错误:呼叫'f1(double [size1] [size2])'
没有匹配功能谢谢!
----编辑1 ----
但是,我不确定为什么第一个示例有效而第二个示例不起作用。
示例1-> Works
template <typename type, size_t size1, size_t size2>
void f1(type (&matrix)[size1][size2]){ }
int main()
{
double matrix[100][200];
f1(matrix);
return 0;
}
示例2->不工作
template <typename type, size_t size1, size_t size2>
void f1(type (&matrix)[size1][size2]){ }
int main()
{
size_t size1=100;
size_t size2=200;
double matrix[size1][size2];
f1(matrix);
return 0;
}
----编辑2 ----
使用const
示例1-使用const 1函数 -> works
template <typename type, size_t size1, size_t size2>
void f1(type (&matrix)[size1][size2]){ }
int main()
{
const size_t size1=100;
const size_t size2=200;
double matrix[size1][size2];
f1(matrix);
return 0;
}
示例2-使用const 2函数 ->不工作
template <typename type, size_t size1, size_t size2>
void f1(type (&matrix)[size1][size2]){
}
void f2(const size_t &size1, const size_t &size2){
double matrix[size1][size2];
f1(matrix);
}
int main()
{
const size_t size1=100;
const size_t size2=200;
f2(size1,size2);
return 0;
}
C 中没有可变长度数组。但是,大多数C 编译器确实支持它们作为扩展。但是,即使他们确实支持了这一点,这些数组的大小在编译时就不知道,因此不会发生模板扣除。
因此,编译器给您带来了错误,尽管我承认,这并不是最容易理解一个的错误。
相关文章:
- 将可变参数函数的参数封装在类实例中
- QML 使用带有参数C++函数
- 使用可变参数函数作为模板参数
- 如何在C++中伪造虚拟可变参数函数模板?
- 为什么可变参数函数不适用于模板
- C++ std::functional 中的可变参数函数模板
- 可变参数函数指针的定义对于VxWorks spyLib来说不清楚
- 使用可变参数函数覆盖具有不同函数签名的虚函数
- 考虑引用和常量的可变参数函数包装器
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 在可变参数函数中转发特定范围的参数
- 通过引用传递参数;函数返回类型是否必须为 VOID?
- 使用带有一个参数函数的递归找到数字的平方
- 可变参数函数模板不能很好地使用 std::function 作为参数
- 多个可变参数函数的单个模板参数包?
- 参数数据类型未知的可变参数函数
- 可变参数函数参数包扩展
- 使用模板可变参数函数将多个参数传递给另一个函数
- 对可变参数函数的递归调用的链接器错误
- 通过像printf这样的可变参数函数传递一个带有常量字符*转换函数的类