«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
Aşağıdaki durumda, bağımlı türler için neden typen kullanmak gerekli değildir?
Burada bir tür referansı kaldırma hakkında okuyordum . Aşağıdaki örneği verir: #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 &&>(); print_is_same<int, std::remove_reference<int>::type>(); // …


2
Neden C ++, Foo <T> :: Foo (T&&) çağrısında T'yi çıkaramaz?
Aşağıdaki şablon yapısı göz önüne alındığında: template&lt;typename T&gt; struct Foo { Foo(T&amp;&amp;) {} }; Bu derlenir ve Tşu şekilde çıkarılır int: auto f = Foo(2); Ancak bu derlenmez: https://godbolt.org/z/hAA9TE int x = 2; auto f = Foo(x); /* &lt;source&gt;:12:15: error: no viable constructor or deduction guide for deduction of template …


1
Bir işlev işaretçisi dizisinden işlev işaretçisini şablon argümanı olarak iletme
Bir şablon işaretçisi olarak işlev işaretçisi bir dizi bir işlev işaretçisi geçmek istiyorum. Intellisense bir şeylerin yanlış olduğundan şikayetçi olsa bile kodum MSVC kullanarak derleniyor. Hem gcc hem de clang kodu derleyememektedir. Aşağıdaki örneği düşünün: static void test() {} using FunctionPointer = void(*)(); static constexpr FunctionPointer functions[] = { test …
9 c++  templates  c++14 

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 &lt;type_traits&gt; template&lt;typename T, typename... Ts&gt; using sfinae_t = T; template&lt;typename T, bool... Bs&gt; using sfinae_v_t = sfinae_t&lt;T, typename …


1
Şablonları ve isim aramayı anlamaya çalışmak
Aşağıdaki kod parçacıklarını anlamaya çalışıyorum Snippet # 1 template &lt;typename T&gt; struct A { static constexpr int VB = T::VD; }; struct B : A&lt;B&gt; { }; Ne gcc9 ne de clang9 buraya bir hata atmıyor. S. Bu kod neden derleniyor? A&lt;B&gt;B'den miras alırken somutlaşmıyor muyuz ? B'de VD yoktur, …
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.