C++ template class confusion -


so experienced c programmer took dive c++ toy-compiler writing. "modernizing" c++ code because current code looks more ansi-c , c++ thing takes advantage of std::vector.

so decided use iterators instead of manually iterating through containers , arrays via loop count variable. noticed need middle of several iterators wrote static class function that.

now extending function not return iterator middle element return vector of iterators several parts of container. using templates make code more generic, kind of stuck implementation of current function.

here definition of class:

namespace dbc {   template<typename generic_iterator_t>   class itertools {   public:     /* returns iterator points middle element,      * same calling get_fraction_iterator fraction = 2 */     static generic_iterator_t get_middle_iterator(       generic_iterator_t begin, generic_iterator_t end     );      /* splits container several chunks , returns      * iterators in vector */     template<typename generic_iterator_t, size_t chunks>     static std::vector<generic_iterator_t> get_chunk_iterator(       generic_iterator_t begin, generic_iterator_t end     );      /* calculates optimal chunk size, particulary useful      * get_chunk_iterator */     template<typename generic_number_t>     static constexpr generic_number_t     get_optimal_chunk_size(generic_number_t val);   }; } 

how implement function? far know should correct isn't.

template<typename generic_iterator_t, size_t chunks> static std::vector<generic_iterator_t> dbc::itertools<generic_iterator_t>::get_chunk_iterator<   generic_iterator_t, size_t >(generic_iterator_t begin, generic_iterator_t end) 

change

template<typename generic_iterator_t, size_t chunks> static std::vector<generic_iterator_t> get_chunk_iterator( 

to

template<size_t chunks> static std::vector<generic_iterator_t> get_chunk_iterator( 

and

template<typename generic_iterator_t, size_t chunks> static std::vector<generic_iterator_t> dbc::itertools<generic_iterator_t>::get_chunk_iterator<   generic_iterator_t, size_t >(generic_iterator_t begin, generic_iterator_t end) 

to

template<typename generic_iterator_t> template<size_t chunks>  std::vector<generic_iterator_t>  dbc::itertools<generic_iterator_t>::get_chunk_iterator(   generic_iterator_t begin, generic_iterator_t end ){   return {}; } 

there no need repeat type generic_iterator_t in both class, , in static method of class.

finally, style of using template class kind of template namespace awkward , doesn't yield good.


Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -