|
Boost : |
Subject: [boost] [teeks99-09-p-win2016-64on64][poly_collection] Regression with latest MSVC 14.1 in C++17 mode
From: Joaquin M López Muñoz (joaquinlopezmunoz_at_[hidden])
Date: 2018-02-28 08:51:28
Hi,
MSVC 14.1 (_MSC_FULL_VER=191225834) in C++17 mode (_MSVC_LANG=201704L)
is having a regression when compiling Boost.PolyCollection tests:
The problem happens in this seemingly innocent context
(https://github.com/boostorg/poly_collection/blob/654018c7ce14674a1c0527206ad11c8d98b9aae8/test/test_algorithm_impl.hpp#L209-L242
):
 template<
   typename ForwardIterator1,typename ForwardIterator2,typename Predicate
 >
 bool operator()(
   ForwardIterator1 first1,ForwardIterator1 last1,
   ForwardIterator2 first2,Predicate pred)const
 {
   ...
   using difference_type=
     typename std::iterator_traits<ForwardIterator1>::difference_type;
   difference_type l1=std::distance(first1,last1); // syntax error
(wrongly) signalled here
Is there some kind soul with access to this compiler who'd like to try
the following
workarounds and report the results?
   // workaround 1
   using difference_type=
     typename std::iterator_traits<ForwardIterator1>::difference_type;
   typename difference_type l1=std::distance(first1,last1);
   // workaround 2
   typedef typename
std::iterator_traits<ForwardIterator1>::difference_type difference_type;
   difference_type l1=std::distance(first1,last1);
Thank you!
JoaquÃn M López Muñoz
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk