boost :: filtered_range 클래스에 [] 연산자를 추가하고 싶습니다. 내 코드가있다 :boost :: filtered_range 값에 대한 참조 유형
template <typename TPredicate, typename TRange>
class my_filtered_range : public boost::filtered_range<TPredicate, TRange>
{
public:
my_filtered_range(TPredicate Predicate, TRange &Range) : boost::filtered_range<TPredicate, TRange>(Predicate, Range)
{
}
size_t size() const
{
return std::distance(begin(), end());
}
???? &operator[](size_t Index) const
{
assert(Index < size());
auto It = begin();
std::advance(It, Index);
return *It;
}
};
문제는 [] 연산자에 대한 반환 형식으로 사용하는 유형이다는? Specifiyng 'value_type'이 'const'컨테이너와 함께 클래스를 사용할 수 없으며 "decltype (* begin())"이 VC++ 2013로 컴파일되지 않습니다.
후행 반환 유형에서'decltype'을 사용하여'auto'를 시도 했습니까? – Kiroxas