我正在努力找出为什么使用以下片段的代码不会编译的原因。关于类模板(即Typedef Typey Thing),可能有一些我不了解的东西,但在这种特殊情况下,我不认为这是这样的。

template<typename data_type>
class GlobalStore {

private:
    typedef boost::property_tree::basic_ptree<
        std::string,
        data_type,
        std::less<std::string>
    > _StorageTreeType;

    _StorageTreeType _store;

public:
    // snip

    template<typename T>
    const T Get(_StorageTreeType & st, const std::string & name)
    {
        return st.get<T>(name);  //Compilation chokes here
    }
};

我已经使用了完全相同的设置,尽管在模板类别之外(但仍在使用 完全相同 与上面显示的那样。编译器(GCC/MINGW)错误是

预期的主要表达 '>' 令牌

如果我更换 Tint 或该行上的东西仍然不会编译(“预期的主要表达式之前 int").

有什么想法吗? BOOST :: PTREE文档在 http://www.boost.org/doc/libs/release/boost/property_tree/ptree.hpp

有帮助吗?

解决方案

改变

return st.get<T>(name);

return st.template get<T>(name);

有关更多信息,请参见此常见问题解答: 是什么 ->template, .template::template 语法有关?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top