gpt4 book ai didi

c++ - 使用 std::invoke 调用模板函数

转载 作者:行者123 更新时间:2023-11-30 00:43:29 24 4
gpt4 key购买 nike

我正在尝试使用 std::invoke 调用模板化成员函数,如下面的代码片段所示。

#include <functional>
#include <iostream>

struct Node
{
template <typename T>
T eval(T lhs, T rhs) { return lhs + rhs; }
};

int main(void)
{
std::cout << std::invoke(&Node::eval<int>, 1, 2);

return 0;
}

gcc 8.1 给我错误

no matching function for call to 'invoke(unresolved overloaded function type, int, int)'

我认为这意味着函数模板实际上并未实例化。

我缺少什么才能使通话成为可能?

最佳答案

两个问题:

首先,您的函数模板采用一个类型参数,而不是两个。
其次,您的函数不是static,因此您不能在没有对象的情况下使用它。

struct Node
{
template <typename T>
static T eval(T lhs, T rhs) { return lhs + rhs; }
^^^^^^
};

int main(void)
{
std::cout << std::invoke(&Node::eval<int>, 1, 2);
^^^
return 0;
}

关于c++ - 使用 std::invoke 调用模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54065009/

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