«sfinae» 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 …

28
Bir C ++ uygulamasına nasıl yansıma ekleyebilirim?
Adı, içeriği (yani üyeler ve türleri) vb. İçin bir C ++ sınıfı introspect edebilmek istiyorum. Ben burada yansıması olan C ++ yönetilen değil, yerel C ++ konuşuyorum. C ++ RTTI kullanarak bazı sınırlı bilgi sağlar farkındayız. Hangi ek kütüphaneler (veya diğer teknikler) bu bilgiyi sağlayabilir?

3
İşlev imzalarında neden std :: enable_if kullanmam gerekiyor?
Scott Meyers bir sonraki kitabı EC ++ 11'in içeriğini ve statüsünü yayınladı . Kitaptaki bir öğenin " std::enable_ifİşlev imzalarından kaçın" olabileceğini yazdı . std::enable_if işlevleri veya sınıfları aşırı yük çözünürlüğünden koşullu olarak kaldırmak için işlev bağımsız değişkeni, dönüş türü veya sınıf şablonu veya işlev şablonu parametresi olarak kullanılabilir. Gelen bu …

2
`Void_t` nasıl çalışır
Walter Brown'un Cppcon14'te SFINAE tekniğini sunduğu modern şablon programlama ( Bölüm I , Bölüm II ) hakkındaki konuşmasını void_tizledim. Örnek: Tüm şablon argümanlarının iyi biçimlendirilmiş olup olmadığını değerlendiren basit bir değişken şablonu verildiğinde void: template< class ... > using void_t = void; ve aşağıdaki özellik olduğunu üyesi değişkeni denilen varlığını …
149 c++  templates  c++14  sfinae 

16
Bir sınıfın belirli bir imzanın üye işlevine sahip olup olmadığını kontrol edin
Bir sınıfın belirli bir imzanın belirli bir üye işlevine sahip olup olmadığını tespit etmek için bir şablon numarası istiyorum. Sorun, http://www.gotw.ca/gotw/071.htm burada alıntılanana benzer, ancak aynı değildir: Sutter'ın kitabının maddesinde, bir C sınıfının, belirli bir imza, aksi takdirde program derlemez. Benim problemimde, bir sınıfın bu işlevi varsa bir şeyler yapmam …
135 c++  c++11  templates  sfinae 

9
C ++ SFINAE örnekleri?
Daha fazla şablon meta programlamaya girmek istiyorum. SFINAE'nin "ikame başarısızlığı bir hata değildir" anlamına geldiğini biliyorum. Ama biri bana SFINAE için iyi bir kullanım gösterebilir mi?

2
Std :: is_function nasıl uygulanır?
Aşağıdaki uygulama nasıl yapılır std::is_function? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; ( CPP Referansından ) Bana öyle geliyor ki, intbu tanımın altında bir işlev olurdu. Neyi kaçırıyorum?
82 c++  templates  std  sfinae 

2
C ++ 'da SFINAE işlevine yaklaşımlar
SFINAE işlevini yoğun olarak bir projede kullanıyorum ve aşağıdaki iki yaklaşım (stil dışında) arasında herhangi bir fark olup olmadığından emin değilim: #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T, int>>> void foo() { std::cout << "method 1" << std::endl; } template <class T, std::enable_if_t<std::is_same_v<T, double>>* = …
40 c++  sfinae 
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.