gpt4 book ai didi

c++ - Template 类功能的选择性启用

转载 作者:搜寻专家 更新时间:2023-10-31 01:20:38 24 4
gpt4 key购买 nike

我有一个模板类,里面有一个普通函数。但我只想为模板类的某些实例启用此正常功能。我查看了 boost::enable_if,它并不完全符合我的需要/可能我无法根据我的需要使用它。

typedef boost::mpl::vector< bool, int, double >  CheckTypes;

template<class X>
class P
{
void init( int x,
typename boost::enable_if< boost::mpl::contains<CheckTypes, X> >::type* dummy = 0);
};

有人可以帮助mw 解决这个问题吗?重要的是解决方案不应期望调用代码有任何内容。并且该类被显式实例化。

谢谢,悟空。

最佳答案

enable_if 通常用于区分函数的不同定义。从某种意义上说,它是一种更强大的重载方式。

看来您只是在满足条件时才尝试启用函数,否则给出编译错误,因为您只有一个 init 定义。如果这是正确的,您可能需要查看 BOOST_STATIC_ASSERT(或 c++0x 中的 static_assert)。

关于c++ - Template 类功能的选择性启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4581512/

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