«template-specialization» etiketlenmiş sorular

6
C ++ işlev şablonu kısmi özelleştirme?
Aşağıdaki kodun bir sınıfın kısmi bir uzmanlığı olduğunu biliyorum: template <typename T1, typename T2> class MyClass { … }; // partial specialization: both template parameters have same type template <typename T> class MyClass<T,T> { … }; Ayrıca, C ++ 'nın işlev şablonu kısmi uzmanlaşmasına izin vermediğini biliyorum (yalnızca tam olarak …

4
Neden işlev şablonu kısmen özelleştirilemez?
Dil belirtiminin kısmen yasakladığını biliyorum , işlev şablonunun uzmanlaşmasını . Bunu neden yasakladığının gerekçesini bilmek isterim? Yararlı değiller mi? template<typename T, typename U> void f() {} //allowed! template<> void f<int, char>() {} //allowed! template<typename T> void f<char, T>() {} //not allowed! template<typename T> void f<T, int>() {} //not allowed!

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 { } …

1
sınıf uzmanlığında clang / gcc tutarsızlığı
Ben yapılandırılmış bağlama için C ++ 17 özel bir sınıf tuple_size/ uzmanlaşmaya çalışırken bu sorunla karşılaştım tuple_element. Aşağıdaki kod GCC'de derlenir, ancak clang'da değil (her iki gövde sürümü, aşağıdaki bağlantıya bakın). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = T; template<typename T, bool... Bs> using sfinae_v_t = sfinae_t<T, typename …
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.