gpt4 book ai didi

c++ - 如何仅在对象恰好有成员函数时才调用它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:58 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Is it possible to write a C++ template to check for a function's existence?

我有一个函数 f,它接收 T 类型的值 val(模板化)。有什么方法可以调用 val 上的成员函数仅当类型具有这样的成员函数时?

例子:

struct Bar {
void foo() const {}
};

template<class T>
void f(T const& val) {
// Is there any way to call *only* if foo() is available on type T?
// SFINAE technique?
val.foo();
}

int main() {
Bar bar;
f(bar);
f(3.14);
}

对我来说听起来像是 SFINAE 技术,也许使用 boost::enable_if,但我不知道如何让它在这里工作。请注意,我无法轻易更改示例中的 Bar 类型。我知道如果 Bar 包含一些特定的 typedef 等,这会很容易,这表明该功能可用。

不用说,我不知道f 将被调用的T 类型集。有些有 foo 成员函数,有些没有。

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