Boost logo

Boost Users :

Subject: [Boost-users] using iterator_range with wchar_t
From: Sean Farrow (sean.farrow_at_[hidden])
Date: 2014-01-13 11:22:14


Hi All,
I'm sorry if this has already been covered.
I'm trying to use iterator_range with a wchar_t.
My code is as follows:
std::wstring buttonName =L"jar:file:/C:/Program%20Files/diseMP/4.5.6/O2-LIVE/lib/client/ClientResources.jar!/branding/default/buttons/FindButtonActive.png";
       bool isGraphical =false;
       isGraphical =boost::algorithm::starts_with(buttonName, L"jar:file:/") && boost::algorithm::ends_with(buttonName, L".png");
       boost::iterator_range<wchar_t> range =boost::algorithm::find_last(buttonName, L"/");

I'm getting the following errors:
                                1>------ Build started: Project: TestApp, Configuration: Debug Win32 ------
1> TestApp.cpp
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(30): error C2039: 'value_type' : is not a member of 'boost::detail::iterator_traits<Iterator>'
1> with
1> [
1> Iterator=wchar_t
1> ]
1> c:\program files (x86)\boost\boost\range\iterator_range_core.hpp(141) : see reference to class template instantiation 'boost::iterator_value<Iterator>' being compiled
1> with
1> [
1> Iterator=wchar_t
1> ]
1> c:\work\panthion studios\o2\testapp\testapp.cpp(11) : see reference to class template instantiation 'boost::iterator_range<IteratorT>' being compiled
1> with
1> [
1> IteratorT=wchar_t
1> ]
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(30): error C2146: syntax error : missing ';' before identifier 'type'
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(30): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(30): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\boost\boost\range\iterator_range_core.hpp(141): error C2039: 'type' : is not a member of 'boost::iterator_value<Iterator>'
1> with
1> [
1> Iterator=wchar_t
1> ]
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(49): error C2039: 'difference_type' : is not a member of 'boost::detail::iterator_traits<Iterator>'
1> with
1> [
1> Iterator=wchar_t
1> ]
1> c:\program files (x86)\boost\boost\range\iterator_range_core.hpp(145) : see reference to class template instantiation 'boost::iterator_difference<Iterator>' being compiled
1> with
1> [
1> Iterator=wchar_t
1> ]
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(49): error C2146: syntax error : missing ';' before identifier 'type'
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(49): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(49): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\boost\boost\range\iterator_range_core.hpp(145): error C2039: 'type' : is not a member of 'boost::iterator_difference<Iterator>'
1> with
1> [
1> Iterator=wchar_t
1> ]
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(36): error C2039: 'reference' : is not a member of 'boost::detail::iterator_traits<Iterator>'
1> with
1> [
1> Iterator=wchar_t
1> ]
1> c:\program files (x86)\boost\boost\range\iterator_range_core.hpp(159) : see reference to class template instantiation 'boost::iterator_reference<Iterator>' being compiled
1> with
1> [
1> Iterator=wchar_t
1> ]
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(36): error C2146: syntax error : missing ';' before identifier 'type'
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(36): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\boost\boost\iterator\iterator_traits.hpp(36): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\boost\boost\range\iterator_range_core.hpp(159): error C2039: 'type' : is not a member of 'boost::iterator_reference<Iterator>'
1> with
1> [
1> Iterator=wchar_t
1> ]
1>c:\program files (x86)\boost\boost\type_traits\is_abstract.hpp(72): error C2139: 'boost::iterator_range<IteratorT>' : an undefined class is not allowed as an argument to compiler intrinsic type trait '__is_abstract'
1> with
1> [
1> IteratorT=wchar_t
1> ]
1> c:\program files (x86)\boost\boost\type_traits\is_abstract.hpp(144) : see reference to class template instantiation 'boost::detail::is_abstract_imp<T>' being compiled
1> with
1> [
1> T=boost::iterator_range<wchar_t>
1> ]
1> c:\program files (x86)\boost\boost\mpl\aux_\preprocessed\plain\or.hpp(51) : see reference to class template instantiation 'boost::is_abstract<T>' being compiled
1> with
1> [
1> T=boost::iterator_range<wchar_t>
1> ]
1> c:\program files (x86)\boost\boost\mpl\if.hpp(63) : see reference to class template instantiation 'boost::mpl::or_<T1,T2>' being compiled
1> with
1> [
1> T1=boost::is_abstract<boost::iterator_range<wchar_t>>,
1> T2=boost::is_array<boost::iterator_range<wchar_t>>
1> ]
1> c:\program files (x86)\boost\boost\range\iterator_range_core.hpp(174) : see reference to class template instantiation 'boost::mpl::if_<T1,T2,T3>' being compiled
1> with
1> [
1> T1=boost::mpl::or_<boost::is_abstract<boost::iterator_range<wchar_t>>,boost::is_array<boost::iterator_range<wchar_t>>>,
1> T2=boost::iterator_range<wchar_t>,
1> T3=boost::iterator_range<wchar_t>
1> ]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Does anyone have any clues as to why this is happening or alternatively any working example?
Help appreciated as always.
Regards
Sean.



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net