gpt4 book ai didi

C++ 部分模板特化语法

转载 作者:太空狗 更新时间:2023-10-29 20:31:22 25 4
gpt4 key购买 nike

对于主模板:

template<typename A, typename B> class MyClass {...

与模板特化有什么区别

template<typename A, typename B> class MyClass<int, float> {...

template<> class MyClass<int, float> {...

最佳答案

template<typename A, typename B> class MyClass<int, float> {...应该是不允许的。实际上,如果您指定形式参数 AB ,您的模板应该使用它们。

第二种情况很正常:您说您正在进行没有“免费”参数的特化。

中间情况可能是

template<typename A> class MyClass<A, float> {...

这又是有效的:这里你只修复了第二个模板参数。

偏特化的思想如下:你用一些形式参数制作一个模板,并用它们来表达对初始模板参数的约束。部分特化的参数不需要与初始模板参数相同。示例:

template<typename X, typename Y, typename Z> class MyClass<X*, Y(Z&)> {...

将是您案例的有效部分特化。这可以理解为“对于任意类型 XYZ ,如果 MyClass 的模板参数匹配 X*Y(Z&) ,则使用此特化”。编译器应该非常聪明才能匹配类型模式。

关于C++ 部分模板特化语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4445593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com