gpt4 book ai didi

c++ - 声明一个与给定模板参数的函数具有相同签名的函数

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:18 25 4
gpt4 key购买 nike

我正在编写一个要派生的包装类,它隐藏了实现。如何获取给定模板参数函数的签名?

template <class T>
struct wrapper
{
static typename std::result_of<&T::impl>::type
call(...) { // this function has the same signature of T::impl();
// here goes the jobs to do, such as logging or something
return T::impl(...);
}
};

struct sum : public wrapper<sum>
{
private:
friend class wrapper<func>
static int impl(int a, int b, int c) {
return a + b + c;
}
};

int main()
{
bind_to(&sum::call); // set binding
std::cout << sum::call(1,2,3) << std::endl;
}

最佳答案

使用参数包:

template <class T>
struct wrapper
{
template <typename... Args>
auto call(Args&&... args) -> decltype(T::impl(std::forward<Args>(args)...))
{
return T::impl(std::forward<Args>(args)...);
}
};

关于c++ - 声明一个与给定模板参数的函数具有相同签名的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643989/

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