代码之家  ›  专栏  ›  技术社区  ›  Yippie-Ki-Yay

C++绑定问题

  •  1
  • Yippie-Ki-Yay  · 技术社区  · 15 年前

    有什么办法吗 boost::bind 一起工作 std::fill ?

    我试过以下方法,但没用:

    boost::bind(std::fill, x.begin(), x.end(), 1);
    
    1 回复  |  直到 15 年前
        1
  •  10
  •   Collin Dauphinee    15 年前

    问题是 std::fill 是模板函数。模板函数实际上并不存在,比如说,直到它们被实例化。你不能记下 性病::填写 因为它并不真正存在;它只是使用不同类型的类似函数的模板。如果您提供模板参数,它将引用模板的特定实例化,一切都将正常。

    这个 性病::填写 函数有两个模板参数: 前进迭代器类型 ,它是容器的迭代器类型,并且 数据类型 ,这是容器保存的类型。您需要同时提供这两者,因此编译器知道 性病::填写 要使用的模板。

    std::vector<int> x(10);
    boost::bind(std::fill<std::vector<int>::iterator, int>, x.begin(), x.end(), 1);