Pertanyaan yang diberi tag «variadic-templates»

8
“Membongkar” sebuah tuple untuk memanggil pointer fungsi yang cocok
Saya mencoba untuk menyimpan dalam std::tupleberbagai jumlah nilai, yang nantinya akan digunakan sebagai argumen untuk panggilan ke pointer fungsi yang cocok dengan tipe yang disimpan. Saya telah membuat contoh sederhana yang menunjukkan masalah yang saya sedang berjuang untuk pecahkan: #include <iostream> #include <tuple> void f(int a, double b, void* c) …

6
make_unique dan penerusan sempurna
Mengapa tidak ada std::make_uniquetemplat fungsi di pustaka C ++ 11 standar? saya menemukan std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); sedikit bertele-tele. Bukankah yang berikut ini akan jauh lebih baik? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Ini menyembunyikan yang newbaik dan hanya menyebutkan tipe sekali. Bagaimanapun, ini adalah upaya saya untuk implementasi …

1
Bagaimana seseorang memanggil std :: forward pada semua argumen dalam fungsi variadic?
Saya baru saja menulis pabrik objek generik dan menggunakan pustaka meta preprocessor boost untuk membuat template variadic (menggunakan 2010 dan tidak mendukungnya). Fungsi saya menggunakan referensi rval dan std::forwardmelakukan penerusan sempurna dan itu membuat saya berpikir ... ketika C ++ 0X keluar dan saya memiliki kompiler standar, saya akan melakukan …


2
Apa aturan untuk token "..." dalam konteks template variadic?
Di C ++ 11 ada template variadic seperti ini: template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args ) { return unique_ptr<T>(new T(std::forward<Args>(args)...)); } Ada beberapa keingintahuan tentang ini: Ekspresi std::forward<Args>(args)...menggunakan keduanya Argsdan argstetapi hanya satu ...token. Selanjutnya std::forwardadalah fungsi template non-variadic yang hanya mengambil satu parameter template dan …

4
Bagaimana cara menyimpan argumen template variadic?
Apakah mungkin untuk menyimpan paket parameter untuk digunakan nanti? template <typename... T> class Action { private: std::function<void(T...)> f; T... args; // <--- something like this public: Action(std::function<void(T...)> f, T... args) : f(f), args(args) {} void act(){ f(args); // <--- such that this will be possible } } Kemudian nanti: void …

11
Pretty-print std :: tuple
Ini adalah tindak lanjut dari pertanyaan saya sebelumnya tentang wadah STL dengan pencetakan cantik , yang untuknya kami berhasil mengembangkan solusi yang sangat elegan dan sepenuhnya umum. Pada langkah selanjutnya, saya ingin memasukkan pencetakan cantik untuk std::tuple<Args...>, menggunakan templat variadic (jadi ini benar-benar C ++ 11). Karena std::pair<S,T>, saya hanya …


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, …

3
Templat variadik: buka argumen dalam grup
Saya memiliki fungsi yang membutuhkan dua argumen: template <typename T1, typename T2> void foo(T1 arg1, T2 arg2) { std::cout << arg1 << " + " << arg2 << '\n'; } Dan satu variadic yang harus meneruskan argumennya secara berpasangan: template <typename... Args> void bar(Args&&... args) { static_assert(sizeof...(Args) % 2 == …

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.