C ++ 'da şablon tipi parametrelerine ilişkin

Buradaki bazı soruları inceledim ve şablonlanmış nesne için tip parametresi olarak tip void olarak türetilen bir tamsayı (neye benzediğini) gösteren bir örnek kod buldum. İşte demek istediğim bir örnek:

SomeRandomObject Object;

Birisi kodun "boşluk (int)" bölümünü ve ne yaptığını açıklayabilirse memnun olurum.

5

2 cevap

Bu tür "bir int alan ve void " döndüren işlevdir.

7
katma
Tamam. Yardım için teşekkürler.
katma yazar user865927, kaynak

Tür bir işlev türüdür. Bu kadar tanıdık olmayabilir, çünkü şu ana kadar sadece işaretçi türlerinde kullanılmıştır:

typedef int (ft)(void); //Huh?  (raw function type)
typedef ft *fp;         //???   (pointer to function)

typedef int (*fp_oldstyle)(void);//Ahh... (same as fp)

Functions themselves do have types, but since you cannot declare variables of that type or references to it, the only thing you would typically use are pointers, which are declared in the familiar syntax on the last line. For any function int foo(void);, both foo and &foo are interpreted as the pointer, so the "raw" function type ft isn't needed.

Ancak, std :: function , std :: bind ve lambda'ları çevreleyen yeni şablon sihirbazıyla, şablon parametrelerinde çıplak işlev türlerini görmek artık çok daha yaygın bir şeydir. .

2
katma
Fonksiyon referansına sahip olmak mümkündür.
katma yazar AraK, kaynak
Katılıyorum, nadiren gördüm. İlgili soru benim: stackoverflow.com/questions/1516958/…
katma yazar AraK, kaynak
@AraK: Ah, bu doğru: ft & f = foo; f() ;. Teşekkürler! Yine de çok kullanılmıyor gibi görünüyor; Referansların yeniden atanabilir olmadığından dolayı farz ediyorum.
katma yazar Kerrek SB, kaynak