我目前正在尝试编写一个函数,它将任何类型的 STL 数组作为其参数之一。很明显的写法是:
template<typename T, int count>
void setArrayBufferData(GLenum usage, const std::array<T, count>& data) {
setArrayBufferData(usage, data.data(), sizeof(T) * count);
}
这是另一个重载,它仅供参考
void setArrayBufferData(GLenum usage, void* data, int size) {
glBufferData(GL_ARRAY_BUFFER, size, data, usage);
}
函数定义编译得很好。但是,当我尝试调用它时
std::array<int, 4> data;
setArrayBufferData(GL_STATIC_DRAW, data);
我收到“调用‘setArrayBufferData’没有匹配的函数”错误消息。我知道如果我在调用中指定了模板参数,它会起作用,但我希望调用推断它们。我已经尝试研究模板模板参数,一个更通用的声明,然后是一个 std::array 专业化,以及我能想到的所有其他语法变体,但我似乎无法找到一种方法来获得我正在寻找的东西为了。有没有可能,如果有,需要做什么?