«templates» etiketlenmiş sorular

Şablonlar etiketi birden çok bağlamda kullanılır: genel programlama (özellikle C ++) ve şablon motorları kullanarak veri / belge oluşturma. Bu etiketi uygulamada yoğun sorularda kullanırken - uygulamanın yazıldığı kod dilini etiketleyin.

3
Derleme zamanında çok boyutlu bir std :: vektörünün derinliğini nasıl alabilirim?
Çok boyutlu alır std::vectorve bir şablon parametresi olarak geçirilmesi için derinlik (veya boyut sayısı) gerektiren bir işlevi var . Bu değeri kodlamak yerine derinliği bir değer olarak constexpralıp std::vectordöndürecek bir fonksiyon yazmak istiyorum unsigned integer. Örneğin: std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, { …

4
Şablon meta programlama
Birisi bana açıklayabilir, ilk şablon meta-programlama yolu neden sonsuz döngüye gidiyor, ikincisi doğru çalışıyor. #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 val = N; }; int …

2
Remove_reference işlevler üzerinde neden çalışmıyor?
Geçen gün bazı metaprogramlama yaparken garip bir şeyle karşılaştım. Temelde bu iddiayı aşağıya (beklediğim gibi) geçmiyor. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); İlk başta bir işlev referansı tanımlayan sözdizimsel bir hata yaptığımı sanıyordum, ancak bu iddia geçerliliğini koruyor. static_assert(std::is_same_v<void()&, void()&>); Ayrıca remove_referencecppreference kaynak kopyalamak kendimi uygulamayı denedim ama bu da işe yaramadı. Burada neler …
38 c++  templates  types  c++17 

4
Şablonları kullanarak bir işlevi aşırı yükleme
Şablonları kullanarak bir işlev tanımlamak çalışıyorum ve typename int veya anEnum (tanımladığım belirli bir numaralandırma) olmasını istiyorum. Aşağıdaki denedim ama başarısız oldu: template <int | anEnum T> // or <int T, anEnum T> or <int, anEnum T> bool isFunction(const T &aVariable){} Yapmaya çalıştığım, aşırı yüklenmiş iki işlevi tanımlamak yerine şablonları …

3
C ++ 'da tip listelerinin Kartezyen ürününü nasıl oluşturabilirim?
Kendini açıklayıcı. Temelde, şöyle listeleri var diyelim: using type_list_1 = type_list<int, somestructA>; using type_list_2 = type_list<somestructB>; using type_list_3 = type_list<double, short>; Değişken sayıda tip listesi olabilir. Kartezyen bir ürün listesi nasıl alabilirim? result = type_list< type_list<int, somestructB, double>, type_list<int, somestructB, short>, type_list<somestructA, somestructB, double>, type_list<somestructA, somestructB, short> >; Burada verildiği …

4
Genel bir bağımsız değişken olarak belirli bir türe sahip STL kapsayıcısı
Ben std::stringparametre olarak belirli bir tip (diyelim ) ile bir kap alır bir işlevi yapmak herhangi bir yolu var mı void foo(const std::container<std::string> &cont) { for(std::string val: cont) { std::cout << val << std::endl; } } ve her stl konteyneri için girdi olarak çağır? yukarıdaki gibi? std::set<std::string> strset; std::vector<std::string> strvec; …

1
Bir işlev parametresi için şablon bağımsız değişken yer tutucu olarak 'otomatik'
C ++ 20 autoişlev parametre türü için kullanılmasına izin verir . Aynı zamanda kullanılmasına izin mu autobir şablon bağımsız değişken tutucu olarak (benzer, ama ruhunda C ++ 17 şablon <oto> bir şekilde) işlev parametre tipleri için? Yani aşağıdaki kod, C ++ 20 öncesi: template<typename First, typename Second> void printPair(const std::pair<First, …
22 c++  templates  auto  c++20 

4
Şablon türünün doğru yapıcısını nasıl çağırırım?
Aşağıdaki kodda, yorumlanan satırın hemen üstündeki satırla aynı şekilde çalışmasını nasıl sağlayabilirim? Ben genel bir kod yapmak istiyorum, bu bir şablonun uygun yapıcı çağırır Type. #include <string> #include <iostream> template <typename Type> struct Class { Type data; Class(Type data) : data(data) { } }; int main() { Class<std::string> a = …




1
Clang, bir sınıf şablonunun iç içe sınıfının yalnızca uzmanlıklar aracılığıyla tanımlandığı kodu reddetmek için doğru mu?
Aşağıdaki sınıf şablonu verildiğinde: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; Innerher uzmanlık alanı için ayrı ayrı tanımlarız Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; ve ardından aşağıdaki ftüm uzmanlıklar için üye işlevini bir kez tanımlayın Outer: auto Outer<T>::f(Inner) -> void { } …

2
Belirsiz Aşırı Yük Şablonları
Aşağıdaki şablon kodu var #include <vector> #include <array> #include <iostream> template<typename T1> void foo(std::vector<T1> bar) { std::cout << "GENERIC" << std::endl; } template<typename T1> void foo(std::vector<std::vector<T1>> bar) { std::cout << "SPECIFIC (vector)" << std::endl; } template<typename T1, int SIZE> void foo(std::vector<std::array<T1, SIZE>> bar) { std::cout << "SPECIFIC (array)" << std::endl; …
16 c++  templates 

2
Şablon typename bağımsız değişkenine başvuru iletme
Referansı şablon türü adı bağımsız değişkenine argüman olarak iletmenin bir yolu var mı? Yani bir int geçmek yerine, örneğin bir int'e bir referans geçirmek için. template <typename T> struct Foo { Foo(T arg) : ptr(arg) {} T ptr; }; int main() { int* a = new int(6); Foo<decltype(a)> foo1(a); // …
16 c++  templates 


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.