gpt4 book ai didi

c++ - 升压::变体 - "no matching function for call"

转载 作者:太空宇宙 更新时间:2023-11-04 14:17:57 26 4
gpt4 key购买 nike

关于这个问题有很多问题,但似乎没有一个能解决我的问题。我不认为这真的是一个 Boost::Variant 问题;我很确定我只是以错误的方式使用了模板。我能够剥离代码,以便您可以编译它并自己查看问题,这非常简单 - 我一直从 gcc 收到“无函数调用”错误,即使它看起来就在那里。我可能正在做一些愚蠢的事情,但我似乎看不出我做错了什么。

#include <boost/variant.hpp>

typedef boost::variant<int, std::string> Data;

struct A
{
template <typename T> T data() { return boost::get<T>(m_data); };
private:
Data m_data;
};

struct B
{
template <typename T> T data() { return m_a.data(); };
private:
A m_a;
};

int main (int argc, char *argv[])
{
return 0;
};

最佳答案

正如 Asha 在评论中指出的那样,您应该这样写:

template <typename T> T data() { return m_a.data<T>(); };

struct B 中。

需要它是因为模板参数不会根据返回类型自动扣除(仅根据参数)。

关于c++ - 升压::变体 - "no matching function for call",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9766945/

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