gpt4 book ai didi

c++ - 测试是否存在非类成员函数(SFINAE)

转载 作者:行者123 更新时间:2023-11-28 05:34:08 26 4
gpt4 key购买 nike

<分区>

我已经定义了很多对象,我为其中一些对象定义了一个函数:

template <typename Ratio> 
auto print(const T &t, bool a= true, bool b= true)
{
std::stringstream ss;
// ... do stuff ...
return ss.str();
}

其中 T 是为其定义了 print 的对象之一的类型。比率在函数内部使用。

我的问题是:有没有办法让类型 T 找到这个函数是否存在?

对于其他用途,我已经使用模板和 SFINAE 来检测类成员方法是否存在。但是对于我这里的问题,我找不到解决方案......有人吗?

谢谢,本

PS:SFINAE 在我的代码中使用的示例,我需要在其中检测类成员方法是否存在。

static T none() { ... }

/**
* SFINAE for checking id none method exists
*/
template <class T>
static auto hasNoneMethod(int)
-> std::integral_constant<bool, std::is_same<T, decltype(T::none())>::value>;
template <class>
static auto hasNoneMethod(...) -> std::false_type;

/**
* Type-Function
*/
template <typename T>
struct HasNoneMethod: decltype(detail::hasNoneMethod<T>(0)) {
};

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