«template-meta-programming» etiketlenmiş sorular

27
Sınıf üyesi işlevinin varlığı için geçici kontrol?
Bir sınıfta belirli bir üye işlevinin tanımlanmasına bağlı olarak davranışı değiştiren bir şablon yazmak mümkün müdür? İşte ne yazmak istiyorum basit bir örnek: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString)) return obj->toString(); else return "toString not defined"; } Yani, eğer class Tetmiştir toString()tanımlanan, o zaman bunu kullanır; aksi taktirde …

20
Bir std :: tuple'ın öğeleri üzerinde nasıl yineleme yapabilirsiniz?
Bir demet üzerinde nasıl yineleme yapabilirim (C ++ 11 kullanarak)? Aşağıdakileri denedim: for(int i=0; i<std::tuple_size<T...>::value; ++i) std::get<i>(my_tuple).do_sth(); ama bu çalışmıyor: Hata 1: üzgünüm, uygulanmamış: 'Dinleyici ...' sabit uzunluklu bir bağımsız değişken listesine genişletilemiyor. Hata 2: Sabit bir ifadede görünemiyorum. Öyleyse, bir demetin öğeleri üzerinde nasıl doğru bir şekilde yineleme yapabilirim?


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
Bir kavramın bir işleve aktarılması
Kavramlar derleme zamanı tahminleri olarak tanımlandığından, bu tahminleri derleme zamanı algoritmaları için yeniden kullanmak da mümkün müdür? Örneğin, bir demet içindeki tüm tiplerin bir konsepte uygun olup olmadığını kontrol etmek mümkün müdür? Gördüğüm kadarıyla, bir kavramı bir işleve herhangi bir şekilde aktarmak mümkün değil, bu da beni bu durumlar için …

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.