boost 中的 string_ref 和 GSL 中的 string_span 都没有定义采用一对迭代器的构造函数。这个决定的原因是什么?
通常这没什么大不了的,我可以像这样创建 string_ref :
boost::string_ref s(start, std::distance(start, finish));
但我想要采用一对迭代器的构造函数的原因是因为我的代码如下所示:
template<typename Type, typename Iterator>
void func(const Iterator& begin, const Iterator& end)
{
Type s(begin, end);
//do stuff with s
}
目前,我可以这样称呼它:
func<std::string>(start, finish)
我想将其更改为:
func<boost::string_ref>(start, finish) //compile error
但是该代码无法编译,因为缺少构造函数在 string_ref 中采用一对迭代器