here'dan, std::function
'un function_type
veya eşdeğer bir üye türünün, onu başlatmak için kullanılan gerçek tipi dışa aktarması gerektiği görünmüyor.
result_type
, argument_type
, yanı sıra first_argument_type
ve second_argument_type
vardır, ancak yukarıda belirtilen türden hiçbir şey yoktur.
Neden böyle bir türü arayüzünün bir parçası olarak sunmuyor?
Elbette bunun için iyi bir neden var, ama nedenini anlayamıyorum, bu yüzden sadece onu bulmayı düşünüyorum. Ben ilk soru olacak biliyorumNeden std :: function işlev_türü veya eşdeğer üye türüne sahip değil?
niçin bunu, iyi, ben onların altında yatan tipleri öyle bir sfinae değerlendirme, aynı olup olmadığını kontrol etmek std::is_same<F1::function_type, F2::function_type>::value
gibi bir şey yapmak istiyorum hayal gerekiyor İşaretler aynı olduğu sürece farklı işlevler içeriyorsa iyi olur.
Bunun çok anlamlı olmadığını itiraf ediyorum, dürüst olmak gerekirse soru sadece merak uğruna.
o
başlatmak için kullanılan gerçek türü ihracat:his answer yorumlarında @Brian tarafından belirtildiği gibi
, ben yazarken başlatmak terimini kötüye DÜZENLEME
Neye ilgi duyduğum aslında şablon argümanıdır.
Örnek olarak, std::function<void(S&, int)>
(S
bir yapıdır), function_type
void(S&, int)
olur.
'is_same' için, 'F1' ve' F2' aynı türde olup olmadığını kontrol edebilirsiniz, değil mi? – Brian
@Brian evet, kesinlikle, yorumuma dikkat et * Çok mantıklı olmadığını itiraf ediyorum * !! :-) ... Sadece bunun için makul bir kullanım bulamamış olsam bile, fonksiyonun arayüzünün bir parçası olmadığı bir neden olup olmadığını merak ediyorum ve bu zaten iyi olurdu. cevap gerçekten. Emin değilim * işe yaramıyor * tek mantıklı cevap ya da başka sebepler varsa. Bu kadar. – skypjack