小编Kam*_*air的帖子

为什么string_view构造函数不接受一对迭代器

boost中的string_ref和GSL中的string_span都没有定义带有一对迭代器的构造函数.这个决定的原因是什么?

通常这不是什么大问题,我可以像这样创建string_ref:

boost::string_ref s(start, std::distance(start, finish));
Run Code Online (Sandbox Code Playgroud)

但我希望构造函数采用一对迭代器的原因是因为我的代码看起来像这样:

template<typename Type, typename Iterator>
void func(const Iterator& begin, const Iterator& end)
{
    Type s(begin, end);
    //do stuff with s
}
Run Code Online (Sandbox Code Playgroud)

目前,我可以这样称呼它:

func<std::string>(start, finish)
Run Code Online (Sandbox Code Playgroud)

我想将其更改为:

func<boost::string_ref>(start, finish) //compile error
Run Code Online (Sandbox Code Playgroud)

但是该代码将无法编译,因为缺少构造函数在string_ref中使用一对迭代器

c++ string-view string-span

7
推荐指数
2
解决办法
1556
查看次数

标签 统计

c++ ×1

string-span ×1

string-view ×1