0
這是我mergeSort
方法內部的代碼,爲什麼我不能在遞歸lambda函數中使用auto?
std::function<void(std::vector<T>*)> mergeSortRange = [&](std::vector<T>* array) -> void {
int length = (int) array->size();
if (length < 2)
return;
std::vector<T>* leftArr = new std::vector<T>(array->begin(), array->begin() + length/2);
std::vector<T>* rightArr = new std::vector<T>(array->begin() + length/2, array->end());
mergeSortRange(leftArr);
mergeSortRange(rightArr);
mergeTwoSortedArrrays(leftArr, rightArr, array);
delete leftArr;
delete rightArr;
};
我可以取代於第一線:
auto mergeSortRange = [&](std::vector<T>* array) -> void
,我希望它正常工作(請原諒我的無知)。
但相反的編譯器抱怨說:
變量「mergeSortRange」與「自動」聲明不能出現在其 自己的初始化。
我已經指定了參數和返回類型。有人可以對此有所瞭解嗎?
它是如何「不起作用」? – NathanOliver
,因爲變量「mergeSortRange」僅在語句結尾處獲得其類型,並且您正試圖在使用它之前使用它 – RiaD
什麼是「類型」?它與返回類型不同嗎? –