Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 选择,而不是如何选择基础模板的显式专门化。使用标准中的示例进行更新。我之前很快跳过了这一段,但我相信这正是我想要的。谢谢。这是我在标准中看到的第一个地方。我相信这与@怀疑论者的答案(即使答案只与函数模板相关)结合起来定义了这种行为。 template<_C++_Templates_Language Lawyer - Fatal编程技术网

C++ 选择,而不是如何选择基础模板的显式专门化。使用标准中的示例进行更新。我之前很快跳过了这一段,但我相信这正是我想要的。谢谢。这是我在标准中看到的第一个地方。我相信这与@怀疑论者的答案(即使答案只与函数模板相关)结合起来定义了这种行为。 template<

C++ 选择,而不是如何选择基础模板的显式专门化。使用标准中的示例进行更新。我之前很快跳过了这一段,但我相信这正是我想要的。谢谢。这是我在标准中看到的第一个地方。我相信这与@怀疑论者的答案(即使答案只与函数模板相关)结合起来定义了这种行为。 template<,c++,templates,language-lawyer,C++,Templates,Language Lawyer,选择,而不是如何选择基础模板的显式专门化。使用标准中的示例进行更新。我之前很快跳过了这一段,但我相信这正是我想要的。谢谢。这是我在标准中看到的第一个地方。我相信这与@怀疑论者的答案(即使答案只与函数模板相关)结合起来定义了这种行为。 template<int I, int J, class T> class X { }; template<int I, int J> class X<I, J, int> { }; // #1 template<int I


选择,而不是如何选择基础模板的显式专门化。使用标准中的示例进行更新。我之前很快跳过了这一段,但我相信这正是我想要的。谢谢。这是我在标准中看到的第一个地方。我相信这与@怀疑论者的答案(即使答案只与函数模板相关)结合起来定义了这种行为。
template<int I, int J, class T> class X { };
template<int I, int J> class X<I, J, int> { }; // #1
template<int I> class X<I, I, int> { }; // #2
template<int I0, int J0> void f(X<I0, J0, int>); // A
template<int I0> void f(X<I0, I0, int>); // B

template <auto v> class Y { };
template <auto* p> class Y<p> { }; // #3
template <auto** pp> class Y<pp> { }; // #4
template <auto* p0> void g(Y<p0>); // C
template <auto** pp0> void g(Y<pp0>); // D
template<typename T> concept C = requires (T t) { t.f(); };
template<typename T> concept D = C<T> && requires (T t) { t.f(); };
template<typename T> class S { };
template<C T> class S<T> { }; // #1
template<D T> class S<T> { }; // #2
template<C T> void f(S<T>); // A
template<D T> void f(S<T>); // B
template<class T> class stream;

template<> class stream<char> { /* ... */ };

template<class T> class Array { /* ... */ };
template<class T> void sort(Array<T>& v) { /* ... */ }

template<> void sort<char*>(Array<char*>&);