关于这个问题有很多问题,但似乎没有一个可以解决我的问题。我不认为这真的是一个 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;
};