oldukça şaşırdı: std::tr1::function
bir Objective-C bloktan inşa edilmektedir yeteneğine sahiptir gibiNeden std :: tr1 :: işlevi Objective-C Blokları ile çalışır? Aşağıdaki kod aslında çalıştığını bulunca
std::vector<int> list /*= ...*/;
std::tr1::function<void(int)> func = ^(int i) {
return i + 1;
};
std::for_each(list.begin(), list.end(), func);
görünüyor, ama emin değilim oldukça nasıl beri (son Ben kontrol ettim, onun uygulama özellikle blokları işlemez. Bir şekilde temel fonksiyon göstergesini dolaylı olarak mı emiyor? Ayrıca, bu davranış tanımlanmamış ve muhtemelen değişiyor mu?
C++ bakış açınızdan, std :: işleviniz void f (int) 'gibi görünen herhangi bir şeye işaretçi tutar. Bir bloğun neye benzediyse, işe yarayacaktır (aksi halde değil). –
@Bavazan Etiket düzenlemeleri için teşekkürler! –