在模板函数中,在')'标记之前的预期主表达式

时间:2015-03-20 12:05:51

标签: c++ c++11 metaprogramming

有一个元组的包装器,它描述了访问元组元素的功能。此包装器用于执行搜索指定类型的类的模板函数。 这是代码模板函数:

template
<
  Calculating::CalculateTypes calculateType,
  class SourceDataType = typename calculating_list_type::template strategy_type_selector<calculateType>::source_data_type
>
auto calculate(const SourceDataType & sourceData)
  -> decltype(typename calculating_list_type::template strategy_type_selector<calculateType>::result_type())
{
  auto& strategy = _calculates.lookup<calculateType>(); //error in this place...

  strategy.setSourceData(sourceData);
  strategy.calculate();

  return strategy.getResult();
}

在此上下文中,_calculates是类的成员,我们称之为函数,数据类型:calculation_list_type

这是访问包装函数元组的代码:

template<CalculateTypes calculateType>
inline auto lookup()
  -> decltype(std::get<Private::IndexOfList<calculateType, StrategyTypes...>::value>(_calculatingTuple))
{
   return std::get<Private::IndexOfList<calculateType, StrategyTypes...>::value>(_calculatingTuple);
}

最有趣的是模板函数访问功能可以很好地工作,例如:

std::cout << es.getCalculateList().lookup<Calculating::CalculateTypes::MAIN_VOLUME>().getName() << std::endl;// works great...

我做错了什么?

0 个答案:

没有答案