Я пытаюсь выяснить, почему код со следующим фрагментом не будет компилироваться. Может быть что-то, чего я не понимаю в шаблонах классов (например, имя типа typedef), но я не думаю, что это именно в этом конкретном случае.
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)
ожидаемое первичное выражение до '>'
token
Если я заменим T
на int
или что-то в этой строке, оно все равно не скомпилируется («ожидаемое первичное выражение до int
»).
Есть мысли? Документация Boost :: ptree находится по адресу http://www.boost.org/doc/libs/release/boost/property_tree/ptree.hpp