std::tr1::_Bind<void (*()(std::tr1::reference_wrapper<int>))(int&)>
std::tr1::reference_wrapper<int>
'u anlıyorum ve bu her şey void
döndüren ve argüman olarak int&
değerini alan bir tür işlev göstericisidir. Ancak, başlangıçta *()'u takip edemiyorum. Kod, bir gdb oturumundan kesilmiş bir geçmişten geçiyordu.Bu şablondaki tip nedir?
Ayrıca, tr1 :: işlevinin türü nedir? Bazı işlev geçersiz olan ve hiçbir argüman almayan?
0x00000001000021a1 in std::tr1::function<void()()>::operator() (this=0x7fff5fbffb98) at functional_iterate.h:865
Ancak aşağıdaki bir hatadır: Bu int bir referans alınarak bir işlev için bir işaretçi, bir std::tr1::reference_wrapper<int>
ve dönüş fonksiyonu türüne örneği std::tr1::_Bind
bir örneğidir
template <typename T>
void f()
{
cout << "general\n";
}
template<>
void f<void()()>() // this is error
{
cout << "specific\n";
}
yıldız bunun için iki parantez arasında olması gerekmez mi? – 6502
@ 6502: Hayır, çünkü yıldız, işlevin * dönüş türüne * aittir (kendisinin bir işlevidir ve * için * bu yıldızın işlevi aslında karşılık gelen parantez içinde yer alır. – celtschk
@ Fanatic23: Yazma sürecindeydim. Sadece biraz zaman aldı. – celtschk