Pertanyaan yang diberi tag «templates»

Tag templat digunakan dalam berbagai konteks: pemrograman generik (terutama C ++), dan pembuatan data / dokumen menggunakan mesin templat. Saat menggunakan tag ini pada pertanyaan-pertanyaan berat implementasi - beri tag pada bahasa kode implementasi ditulis dalam.







2
spesialisasi eksplisit dari fungsi anggota kelas template
Saya perlu mengkhususkan fungsi anggota template untuk beberapa jenis (katakanlah ganda ). Ini berfungsi dengan baik sementara kelas Xitu sendiri bukan kelas template, tetapi ketika saya membuatnya, template GCC mulai memberikan kesalahan waktu kompilasi. #include <iostream> #include <cmath> template <class C> class X { public: template <class T> void get_as(); …


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 

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
Mengapa remove_reference tidak berfungsi pada fungsi?
Berlari ke sesuatu yang aneh ketika melakukan beberapa metaprogramming pemrograman tempo hari. Ini pada dasarnya datang ke pernyataan ini tidak (seperti yang saya harapkan) lewat. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); Pada awalnya saya pikir saya membuat kesalahan sintaksis mendefinisikan referensi fungsi, tetapi pernyataan ini berlalu, menunjukkan itu tidak terjadi. static_assert(std::is_same_v<void()&, void()&>); Saya juga …
38 c++  templates  types  c++17 

4
Kelebihan fungsi menggunakan templat
Saya mencoba untuk mendefinisikan suatu fungsi menggunakan template dan saya ingin nama ketik menjadi int atau anEnum (enum spesifik yang telah saya tetapkan). Saya sudah mencoba yang berikut tetapi saya gagal: template <int | anEnum T> // or <int T, anEnum T> or <int, anEnum T> bool isFunction(const T &aVariable){} …

3
Bagaimana saya bisa membuat produk Cartesian dari daftar tipe di C ++?
Cukup jelas. Pada dasarnya, katakan saya memiliki daftar jenis seperti: using type_list_1 = type_list<int, somestructA>; using type_list_2 = type_list<somestructB>; using type_list_3 = type_list<double, short>; Mereka bisa menjadi nomor variadic dari daftar jenis. Bagaimana cara saya mendapatkan daftar produk Cartesian? result = type_list< type_list<int, somestructB, double>, type_list<int, somestructB, short>, type_list<somestructA, somestructB, …

4
Wadah STL dengan jenis tertentu sebagai argumen umum
Apakah ada cara saya bisa membuat fungsi yang mengambil wadah dengan tipe tertentu (katakanlah std::string) sebagai parameter void foo(const std::container<std::string> &cont) { for(std::string val: cont) { std::cout << val << std::endl; } } dan menyebutnya untuk setiap jenis wadah stl sebagai input? seperti diatas? std::set<std::string> strset; std::vector<std::string> strvec; std::list<std::string> strlist; …

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.