using iterator_range with wchar_t
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.
On 1/13/14 11:22 AM, Sean Farrow wrote:
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::wstringbuttonName =L"jar:file:/C:/Program%20Files/diseMP/4.5.6/O2-LIVE/lib/client/ClientResources.jar!/branding/default/buttons/FindButtonActive.png";
boolisGraphical =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"/");
try declaring the range type as: boost::iterator_range<std::wstring::iterator> or boost::iterator_range<wchar_t*> or auto HTH, Jeff
participants (2)
-
Jeff Flinn
-
Sean Farrow