
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