BOOST :: PTREE头痛周围的模板班
-
24-10-2019 - |
题
我正在努力找出为什么使用以下片段的代码不会编译的原因。关于类模板(即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)错误是
预期的主要表达
'>'
令牌
如果我更换 T
和 int
或该行上的东西仍然不会编译(“预期的主要表达式之前 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
语法有关?
不隶属于 StackOverflow