gpt4 book ai didi

c++ - 模板 - 以列出的参数为条件

转载 作者:行者123 更新时间:2023-11-28 00:44:35 24 4
gpt4 key购买 nike

我该怎么做才能达到评论的要求?

template<typename T1, typename T2=int>
struct foo
{
//only define foo function if T2 was explictly listed by client
//(even if it was explictly listed as int)
//what should be inside "enable_if"?
foo(T1 t1, T2 t2){}
};

最佳答案

不要将 T2 设置为 int。相反,将其设置为 MagicFlagTypeThatNobodyElseIsSupposedToUse

然后,在您的模板中,创建一个typedef blahblah RealT2,其中blahblah解析为int,如果T2MagicFlagTypeThatNobodyElseIsSupposedToUse,否则为 T2。 (你必须自己实现 blahblah,这是一个非常简单的 traits 类)。

然后在您的代码中使用 RealT2。如果 RealT2T2 相同,则可以检测是否传入了 T2。使用标准技巧根据编译时 bool 条件(通常通过继承)添加/删除方法,或使用 SFINAE 阻止任何匹配您的方法的人。

关于c++ - 模板 - 以列出的参数为条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16968092/

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