std::array 模板函数
std::array template function
我有一个简单的函数可以随机播放 std::array
中的元素
template <typename T, uint size>
void Shuffle(std::array<T, size> &arr) {
for (uint i = 0; i < arr.size() - 1; i++)
{
std::swap(arr[i], arr[Random(i, arr.size())]);
}
}
make/g++ 不喜欢我声明它的方式,给出了错误“变量或字段 Shuffle 声明无效”。根据我的发现,这可能是一条不相关的错误消息,但我无法弄清楚这里到底出了什么问题。
uint
与 std::array
的第二个模板参数的类型不匹配,即 std::size_t
。这会导致调用 Shuffle
时模板参数推导失败,除非您明确指定模板参数。
您应该声明类型为 std::size_t
的第二个模板参数。例如
template <typename T, std::size_t size>
void Shuffle(std::array<T, size> &arr)
我有一个简单的函数可以随机播放 std::array
中的元素template <typename T, uint size>
void Shuffle(std::array<T, size> &arr) {
for (uint i = 0; i < arr.size() - 1; i++)
{
std::swap(arr[i], arr[Random(i, arr.size())]);
}
}
make/g++ 不喜欢我声明它的方式,给出了错误“变量或字段 Shuffle 声明无效”。根据我的发现,这可能是一条不相关的错误消息,但我无法弄清楚这里到底出了什么问题。
uint
与 std::array
的第二个模板参数的类型不匹配,即 std::size_t
。这会导致调用 Shuffle
时模板参数推导失败,除非您明确指定模板参数。
您应该声明类型为 std::size_t
的第二个模板参数。例如
template <typename T, std::size_t size>
void Shuffle(std::array<T, size> &arr)