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.

6
Bagaimana cara membandingkan struct generik dalam C ++?
Saya ingin membandingkan struct dengan cara yang umum dan saya telah melakukan sesuatu seperti ini (saya tidak dapat membagikan sumber yang sebenarnya, jadi tanyakan lebih detail jika perlu): template<typename Data> bool structCmp(Data data1, Data data2) { void* dataStart1 = (std::uint8_t*)&data1; void* dataStart2 = (std::uint8_t*)&data2; return memcmp(dataStart1, dataStart2, sizeof(Data)) == 0; …

2
jika constexpr dengan static_assert di lambda, kompiler mana yang benar?
Ketika kita ingin menggunakan static_assertdalam if constexprkita harus membuat kondisi tergantung pada beberapa parameter template. Menariknya, gcc dan dentang tidak setuju ketika kode tersebut dibungkus dengan lambda. Kode berikut dikompilasi dengan gcc, tetapi dentang memicu pernyataan, bahkan jika itu if constexprtidak benar. #include <utility> template<typename T> constexpr std::false_type False; template<typename …

1
Definisi C ++ 20 di luar kelas dalam kelas templat
Hingga standar C ++ 20 dari C ++, ketika kami ingin mendefinisikan operator di luar kelas yang menggunakan beberapa anggota pribadi dari kelas templat, kami akan menggunakan konstruksi yang mirip dengan ini: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> …
12 c++  templates  c++20 

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 …


1
Bisakah templat variabel diteruskan sebagai argumen templat templat?
Contoh tidak masuk akal berikut ini tidak mengkompilasi, tetapi apakah ada cara lain untuk meneruskan templat variabel sebagai argumen templat templat? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, zero>(); } Coba …

2
Pengurangan tipe argumen template templat C ++
Saya memiliki kode yang menemukan dan mencetak kecocokan suatu pola ketika melewati wadah string. Pencetakan dilakukan dalam fungsi foo yang templated Kode #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> class Container> void foo(Iterator first, Container<std::pair<Iterator, Iterator>> const &findings) { for …

1
Masalah dalam GCC / C ++ 17 dengan kelas templat templat
Pertimbangkan 2 kelebihan berikut ini template<typename T> bool test() { return true; } template<template<typename ...> class T> bool test() { return false; } Yang pertama berfungsi untuk kelas reguler, sedangkan yang kedua berfungsi untuk templat yang tidak dipakai. Contohnya: std::cout<<test<int>()<<std::endl; <-- this yields 1 std::cout<<test<std::list>()<<std::endl; <--this yields 0 Sekarang pertimbangkan …
10 c++  templates  gcc  clang  c++17 


3
Mengapa tidak perlu menggunakan nama samaran untuk jenis tergantung dalam kasus berikut?
Saya telah membaca tentang menghapus referensi jenis, di sini . Ini memberi contoh berikut: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); print_is_same<int, int &>(); print_is_same<int, int &&>(); …




1
Melewati pointer fungsi dari array pointer fungsi sebagai argumen templat
Saya ingin melewatkan pointer fungsi dari array pointer fungsi sebagai argumen templat. Kode saya tampaknya dikompilasi menggunakan MSVC meskipun Intellisense mengeluh bahwa ada sesuatu yang salah. Baik gcc dan dentang gagal mengkompilasi kode. Perhatikan contoh berikut: static void test() {} using FunctionPointer = void(*)(); static constexpr FunctionPointer functions[] = { …
9 c++  templates  c++14 


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.