Pertanyaan yang diberi tag «sfinae»

27
Templated memeriksa keberadaan fungsi anggota kelas?
Apakah mungkin untuk menulis templat yang mengubah perilaku tergantung pada apakah fungsi anggota tertentu didefinisikan pada kelas? Berikut adalah contoh sederhana dari apa yang ingin saya tulis: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString)) return obj->toString(); else return "toString not defined"; } Jadi, jika class Ttelah toString()didefinisikan, maka ia …

28
Bagaimana saya bisa menambahkan refleksi ke aplikasi C ++?
Saya ingin dapat mengintrospeksi kelas C ++ untuk nama, isinya (yaitu anggota dan tipenya) dll. Saya berbicara asli C ++ di sini, tidak dikelola C ++, yang memiliki refleksi. Saya menyadari C ++ menyediakan beberapa informasi terbatas menggunakan RTTI. Perpustakaan tambahan apa (atau teknik lain) yang bisa memberikan informasi ini?


2
Bagaimana cara kerja `void_t`
Saya menyaksikan pembicaraan Walter Brown di Cppcon14 tentang pemrograman template modern ( Bagian I , Bagian II ) di mana ia mempresentasikan void_tteknik SFINAE- nya . Contoh: Diberi templat variabel sederhana yang mengevaluasi voidjika semua argumen templat terbentuk dengan baik: template< class ... > using void_t = void; dan sifat …
149 c++  templates  c++14  sfinae 


9
Contoh C ++ SFINAE?
Saya ingin masuk ke lebih banyak meta-pemrograman template. Saya tahu bahwa SFINAE adalah singkatan dari "kegagalan substitusi bukanlah kesalahan." Tetapi dapatkah seseorang menunjukkan kepada saya penggunaan yang baik untuk SFINAE?

2
Bagaimana std :: is_function diimplementasikan?
Bagaimana implementasi berikut ini std::is_function? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (dari Referensi CPP ) Menurut saya, sebuah intakan menjadi fungsi di bawah definisi ini. Apa yang saya lewatkan?
82 c++  templates  std  sfinae 

2
Pendekatan berfungsi SFINAE di C ++
Saya menggunakan fungsi SFINAE dalam suatu proyek dan saya tidak yakin apakah ada perbedaan antara dua pendekatan berikut (selain gaya): #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T, int>>> void foo() { std::cout << "method 1" << std::endl; } template <class T, std::enable_if_t<std::is_same_v<T, double>>* = 0> …
40 c++  sfinae 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.