Mam następującą funkcję:Zwraca typ naprawdę długo wyrażenie
inline auto iterateSomething(obj & o)
{
auto iterators = baseIterator(o);
auto tranformer = boost::bind(transofrmToSomething, _1, o);
typedef boost::transform_iterator<decltype(tranformer), decltype(iterators.first)> iterator_t;
iterator_t begin(iterators.first, tranformer);
iterator_t end(iterators.second, tranformer);
return std::make_pair(begin, end);
}
Jak widać nie wiem zwracanej wartości, a nawet jeśli kładę int tam i później skopiować typ z komunikatem o błędzie, jest to naprawdę długi typ ...
Czy istnieje sposób określenia typu zwracanego jako typ jedynego zwrotu w funkcji? czy istnieje jakieś obejście, które nie obejmuje dużego typu w typie zwrotnym?
Typedefs to Twoi znajomi, możesz także zdefiniować metafunkcję, aby obliczyć typ zwrotu. – enobayram
Możesz przenieść typedefs poza funkcję. Następnie możesz go użyć do zadeklarowania typu zwrotu. –