背景:一个模板函数调用另外一个模板函数出现编译错误。
官方解释:错误 C1001 | Microsoft Learn
修正:查阅了不同的资料之后,发现这是一个因代码而异的问题,于是调试确认了代码出现在01这一部分。
for (unsigned long i = 0; i < (num_threads - 1); ++i) {
Iterator block_end = block_start;
std::advance(block_end, block_size);
threads[i] = std::thread(
accumulate_block()<Iterator, T>,//01
block_start, block_end, std::ref(results[i]));
block_start = block_end;
}
发现是模板函数书写错误问题,导致模板函数无法编译,修正如下:
for (unsigned long i = 0; i < (num_threads - 1); ++i) {
Iterator block_end = block_start;
std::advance(block_end, block_size);
threads[i] = std::thread(
accumulate_block<Iterator, T>(),
block_start, block_end, std::ref(results[i]));
block_start = block_end;
}