SomeType bar::foo() const {
SomeType retVal;
for (auto i = 0u; i < 10; ++i) {
retVal = boost::range::join(retVal, m_someDataContainer.equal_range(i));
}
return retVal;
}
позволяет сказать, для простоты, m_someDataContainer и класс бара определены следующим образом:
typedef boost::multi_index_container<
int, bmi::indexed_by<bmi::hashed_unique<bmi::tag<struct someTag>,
bmi::identity<int>>>> Data;
class bar {
public:
SomeType foo() const;
private:
Data m_someDataContainer;
};
вопросов: Как определить тип возвращаемого Foo() и как соединить эти диапазоны без наддува :: any_range
EDIT1: Похоже, что это совершенно невозможно, вызов цикла join в предыдущем объединенном значении делает тип результата вложенным типом join_range of join_range of join_range ... и так далее, что, я думаю, не может быть легко выведено, если на все
Можете ли вы использовать C++ 11? – jrok
в некоторой степени - VS2012 – kreuzerkrieg
Я не знаю, сколько C++ 11 поддерживает VS2012, но если у него есть возвращаемый тип возврата и 'auto', вы в значительной степени настроены. – jrok