Boost logo

Boost :

Subject: Re: [boost] [review] The review of Boost.DoubleEnded starts today: September 21 - September 30
From: degski (degski_at_[hidden])
Date: 2017-09-28 08:12:58


This:

    boost::double_ended::devector<std::uint64_t> v ( 16, 123 );

does not work on both Clang/LLVM-6.0 and VS2017 on Windows. One has to
explicitely cast 123 to std::uint64_t, i.e.

    boost::double_ended::devector<std::uint64_t> v ( 16, ( std::uint64_t )
123 );

does work.

This is inconsistent with std::vector, which quite happily implicitely
converts the int to std::uint64_t.

Clang has this to say about it:

1>z:\vc\x64\include\boost/double_ended/devector.hpp(414): error : no
matching function for call to 'distance'
1>pfr.cpp(70): note: in instantiation of function template specialization
'boost::double_ended::devector<unsigned long long,
boost::double_ended::small_buffer_size<0>,
boost::double_ended::devector_growth_policy, std::allocator<unsigned long
long> >::devector<int, 0>' requested here
1>C:\Program Files (x86)\Microsoft Visual
Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(1104):
note: candidate template ignored: substitution failure [with _InIt = int]:
no type named 'difference_type' in 'std::iterator_traits<int>'
1>In file included from pfr.cpp:44:
1>z:\vc\x64\include\boost/double_ended/devector.hpp(417): error : no
matching function for call to 'distance'
1>C:\Program Files (x86)\Microsoft Visual
Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(1104):
note: candidate template ignored: substitution failure [with _InIt = int]:
no type named 'difference_type' in 'std::iterator_traits<int>'
1>In file included from pfr.cpp:44:
1>z:\vc\x64\include\boost/double_ended/devector.hpp(2188): error :
indirection requires pointer operand ('int' invalid)
1>z:\vc\x64\include\boost/double_ended/devector.hpp(2178): note: in
instantiation of function template specialization
'boost::double_ended::devector<unsigned long long,
boost::double_ended::small_buffer_size<0>,
boost::double_ended::devector_growth_policy, std::allocator<unsigned long
long> >::opt_copy<int,
boost::double_ended::detail::null_construction_guard>' requested here
1>z:\vc\x64\include\boost/double_ended/devector.hpp(2655): note: in
instantiation of function template specialization
'boost::double_ended::devector<unsigned long long,
boost::double_ended::small_buffer_size<0>,
boost::double_ended::devector_growth_policy, std::allocator<unsigned long
long> >::opt_copy<int>' requested here
1>z:\vc\x64\include\boost/double_ended/devector.hpp(419): note: in
instantiation of function template specialization
'boost::double_ended::devector<unsigned long long,
boost::double_ended::small_buffer_size<0>,
boost::double_ended::devector_growth_policy, std::allocator<unsigned long
long> >::construct_from_range<int>' requested here
1>pfr.cpp(70): note: in instantiation of function template specialization
'boost::double_ended::devector<unsigned long long,
boost::double_ended::small_buffer_size<0>,
boost::double_ended::devector_growth_policy, std::allocator<unsigned long
long> >::devector<int, 0>' requested here

degski

-- 
"*Ihre sogenannte Religion wirkt bloß wie ein Opiat reizend, betäubend,
Schmerzen aus Schwäche stillend.*" - Novalis 1798

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk