C ++模板类混淆

时间:2015-08-16 14:24:18

标签: c++ templates

所以我是一位经验丰富的C程序员,最近我正在编写一个玩具编译器的C ++。我目前正在"现代化"我的C ++代码,因为我当前的代码看起来更像ANSI-C,它利用的唯一C ++是std :: vector。

所以我决定使用迭代器而不是通过带有count变量的for循环手动迭代容器和数组。我注意到我需要经常到达几个迭代器的中间,所以我写了一个带有函数的静态类。

现在我将此函数扩展为不仅将迭代器返回到中间元素,而且还将迭代器的向量返回到容器的多个部分。我正在使用模板使代码更通用,但是我对当前函数的实现感到困惑。

以下是该类的定义:

namespace dbc {
  template<typename generic_iterator_t>
  class itertools {
  public:
    /* returns an iterator which points to the middle element,
     * the same as calling get_fraction_iterator with fraction = 2 */
    static generic_iterator_t get_middle_iterator(
      generic_iterator_t begin, generic_iterator_t end
    );

    /* splits a container into several chunks and returns
     * the iterators in a 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 the optimal chunk size, particulary useful
     * for get_chunk_iterator */
    template<typename generic_number_t>
    static constexpr generic_number_t
    get_optimal_chunk_size(generic_number_t val);
  };
}

如何实现此功能? 据我所知,这应该是正确的,但它不是。

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)

0 个答案:

没有答案