neden görünmüyor şu işleri: AçıkçasıHata ayıklama şablon kesinti arızası
std::string fn(int i)
{
sleep(i); // number of seconds to sleep for
std::cout << "Exiting after pausing " << i << " seconds\n";
return std::to_string(i+1);
}
template<typename T, typename U>
int simult(std::function<T(U)> f, std::vector<U> args)
{
return 666;
}
int main()
{
std::vector<int> args { 6, 5, 7 };
int r = simult(fn, args);
}
Fonksiyon simult tamamlanmadı: Sadece bu aşamada derlemek için bir şeyler almaya çalışıyorum. Buradaki fikir, bir işlev ve bir args listesi sağlamanızdır ve simdişler, parçalanmış aramaları kullanarak parçalara ayrılır.
Bu aşamada, derleme sorununu çözmeye çalışıyorum.
simult.cc: In function ‘int main()’:
simult.cc:43:25: error: no matching function for call to ‘simult(std::__cxx11::string (&)(int), std::vector<int>&)’
int r = simult(fn, args);
^
simult.cc:23:5: note: candidate: template<class T, class U> int simult(std::function<T(U)>, std::vector<U>)
int simult(std::function<T(U)> f, std::vector<U> args)
^~~~~~
simult.cc:23:5: note: template argument deduction/substitution failed:
simult.cc:43:25: note: mismatched types ‘std::function<T(U)>’ and ‘std::__cxx11::string (*)(int) {aka std::__cxx11::basic_string<char> (*)(int)}’
int r = simult(fn, args);
^
için
std::vector<U> args
değişti! Öncelikle bir fonksiyon göstergesinde geçen, şablon tipini belirlemesi gereken bir 'std :: function <>' a atamak zorunda mı? – NimHa. Her zaman 666'yı bir test tamsayı olarak kullanırım. Bu gerekçelerle bunu beğendim, artı bir tane. – Bathsheba
@Bathsheba aslında kutsal metinlerin% 80'inde 616'dır ve 666 değil, bu yüzden endişelenecek bir şey yok ... – 101010