Ark*_*kun 2 c++ arrays cuda visual-c++
当我尝试编译由CUDA的cudafe ++工具生成的以下(损坏)代码时,Visual Studio会抛出错误C2244.这是正确的行为吗?海湾合作委员会似乎并不关心签名不匹配.
码:
template<int Size>
class MyClass {
public:
MyClass(const int data[Size]);
};
template<int Size>
MyClass<Size> ::MyClass(const int data[]) {}
void func(MyClass<4> input) {}
Run Code Online (Sandbox Code Playgroud)
输出:
test2.cpp(9) : error C2244: 'MyClass<Size>::MyClass' : unable to match function definition to an existing declaration
test2.cpp(5) : see declaration of 'MyClass<Size>::MyClass'
definition
'MyClass<Size>::MyClass(const int [])'
existing declarations
'MyClass<Size>::MyClass(const int [Size])'
Run Code Online (Sandbox Code Playgroud)
我很确定这不正确.
int foo(const int []);
int foo(const int [4]);
int foo(const int *);
Run Code Online (Sandbox Code Playgroud)
应该都宣布相同的功能.话虽如此,你可能想要的是:
template<int Size>
class MyClass {
public:
MyClass(const int (&data)[Size]);
};
template<int Size>
MyClass<Size> ::MyClass(const int (&data)[Size]) {}
Run Code Online (Sandbox Code Playgroud)
这将仅接受尺寸合适的数组.