gpt4 book ai didi

c++ - 优先级特化

转载 作者:可可西里 更新时间:2023-11-01 15:45:21 25 4
gpt4 key购买 nike

假设我们有一个双参数化模板,例如

template<class A, class B>
class Class { .... };

并且有针对特定 A 的特化和一个特定的 B

template<class B> class Class<A1,B> { .... };
template<class A> class Class<A,B1> { .... };

现在,当我必须实例化 Class<A1,B1> 时编译器提示歧义,因为它找到了 <A,B1><A1,B>同样可用。

当然可以通过添加 <A1,B1> 来解决这个问题。特化,但 - 在我的上下文中 - 它将是相同的 <A1,B> .

有没有办法在不重复整个 <A1,B> 的情况下消除歧义?完整代码?

最佳答案

一种可能性是简单地禁止选择第二个专业:

template<class A, class B, class=void>
class Class {};

template<class B>
class Class<A1,B> {};

template<class A>
class Class<A, B1, typename std::enable_if<!std::is_same<A,A1>::value>::type> {};

Demo .

关于c++ - 优先级特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26841590/

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