https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86015
Bug ID: 86015
Summary: Better handling of iterator distances
Product: gcc
Version: 7.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: joshua.r.marshall.1991 at gmail dot com
Target Milestone: ---
I'm writing containers for containers to track usage and operations for
performance metrics. I've found it impossible to allow implicit conversion
from integer types to a distance object without introducing conflicting
resolutions for all basic math operations. It occasionally leads to errors
like the following:
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algo.h:2495:17:
error: no viable conversion from 'int' to
'distance_counter<__gnu_cxx::__normal_iterator<long *, std::vector<long,
std::allocator<long> > >, long>'
_Distance __len22 = 0;
In this instance, I think the best way to handle this is to change
stl_algo.h:2495: _Distance __len22 = 0;
to
stl_algo.h:2495: _Distance __len22 = _Distance(0);
Am I just doing something dumb, or is this reasonable?