Pertanyaan yang diberi tag «template-meta-programming»

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 …

20
Bagaimana Anda bisa mengulang elemen dari std :: tuple?
Bagaimana saya bisa melakukan iterasi melalui tupel (menggunakan C ++ 11)? Saya mencoba yang berikut ini: for(int i=0; i<std::tuple_size<T...>::value; ++i) std::get<i>(my_tuple).do_sth(); tapi ini tidak berhasil: Kesalahan 1: maaf, tidak diterapkan: tidak dapat memperluas 'Pendengar ...' menjadi daftar argumen dengan panjang tetap. Kesalahan 2: Saya tidak dapat muncul dalam ekspresi konstan. …


3
Bagaimana saya bisa mendapatkan kedalaman std :: vektor multidimensi pada waktu kompilasi?
Saya memiliki fungsi yang mengambil multidimensi std::vectordan membutuhkan kedalaman (atau jumlah dimensi) untuk dilewatkan sebagai parameter templat. Alih-alih hardcoding nilai ini saya ingin menulis constexprfungsi yang akan mengambil std::vectordan mengembalikan kedalaman sebagai unsigned integernilai. Sebagai contoh: std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, { …

4
Templat meta pemrograman
Dapatkah seseorang menjelaskan kepada saya, mengapa cara meta-pemrograman templat pertama akan infinite loop, tetapi yang kedua berjalan dengan benar. #include <iostream> using namespace std; template<int N, int M> struct commondivs { static const int val = (N<M) ? commondivs<N,(M-N)>::val : commondivs<(N-M),M>::val; }; template<int N> struct commondivs<N,N> { static const int …

2
Melewati konsep ke fungsi
Karena konsep didefinisikan sebagai predikat waktu kompilasi, apakah mungkin untuk menggunakan kembali predikat ini untuk algoritme waktu kompilasi? Misalnya, apakah mungkin untuk memeriksa apakah semua tipe dalam tuple sesuai dengan konsep? Sejauh yang saya lihat, tidak mungkin untuk meneruskan konsep ke fungsi dengan cara apa pun, jenis apa yang membuat …

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.