タグ付けされた質問 「partial-specialization」

6
C ++関数テンプレートの部分的な特殊化?
以下のコードはクラスの部分的な特殊化であることを私は知っています: template <typename T1, typename T2> class MyClass { … }; // partial specialization: both template parameters have same type template <typename T> class MyClass<T,T> { … }; また、C ++では関数テンプレートの部分的な特殊化が許可されていないことも知っています(完全のみが許可されています)。しかし、私のコードは、関数テンプレートを1つ/同じ型の引数に部分的に特化したことを意味しますか?Microsoft Visual Studio 2010 Expressで動作するためです!いいえの場合、部分特殊化の概念について説明していただけますか? #include <iostream> using std::cin; using std::cout; using std::endl; template <typename T1, typename T2> inline T1 max …

4
関数テンプレートを部分的に特殊化できないのはなぜですか?
言語仕様が関数テンプレートの部分的な特殊化を禁止していることを私は知っています。 なぜそれが禁止されているのか、その理由を知りたいのですが?それらは役に立ちませんか? 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!

7
C#でテンプレートの特殊化を行う方法
C#をどのように専門化しますか? 問題を提起します。テンプレートタイプがあり、それが何であるかわかりません。しかし、それがXYZあなたが呼び出したいものから派生したものであるかどうかはわかります.alternativeFunc()。優れた方法は、特殊な関数またはクラスを呼び出してnormalCallreturn.normalFunc()を持ち、派生型のXYZ呼び出しに他の特殊化を行うこと.alternativeFunc()です。これはC#でどのように行われますか?

1
クラスの特殊化におけるclang / gccの不整合
特化しようとしているときに、私はこの問題に出くわしtuple_size/ tuple_elementC ++ 17の構造の結合のためのカスタムクラス。 以下のコードはGCCでコンパイルされますが、clangではコンパイルされません(両方のトランクバージョン、以下のリンクを参照)。 #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 std::enable_if<Bs>::type...>; template <typename T> struct Test; template <typename T> struct Test<sfinae_v_t<T, std::is_integral_v<T>>> {}; void f() { Test<int> t; } https://godbolt.org/z/ztuRSq これは、clangによって提供されるエラーです。 <source>:13:8: error: class template partial …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.