Re: [Boost-bugs] [Boost C++ Libraries] #12218: Compilation error using input_seekable with gzip_decompressor()

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #12218: Compilation error using input_seekable with gzip_decompressor()
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2016-08-19 21:21:40


#12218: Compilation error using input_seekable with gzip_decompressor()
-------------------------+-------------------------------------------------
  Reporter: anonymous | Owner: turkanis
      Type: Support | Status: new
  Requests | Component: iostreams
 Milestone: To Be | Severity: Problem
  Determined | Keywords: GZIP, BZIP decompressor, seekable
   Version: Boost | device
  1.58.0 |
Resolution: |
-------------------------+-------------------------------------------------
Changes (by viboes):

 * owner: => turkanis
 * component: None => iostreams


Old description:

> Hello:
>
> I am trying to use boost:iostream::input_seekable and GZIP decompressor.
> But, when the push function is called the compiler show me the error
> below. I posted the code too.
>

> {{{
> std::ifstream file("file.tgz");
> boost::iostreams::filtering_streambuf<boost::iostreams::input_seekable>
> in;
> in.push(boost::iostreams::gzip_decompressor());// here the error C2338,
> if I comment this line the error is gone
> in.push(file);
> }}}
>

> C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(244):
> error C2338: (is_convertible<category, Mode>::value)
> 1>
> C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(216)
> : see reference to function template instantiation 'void
> boost::iostreams::detail::chain_base<boost::iostreams::chain<Mode,Ch,Tr,Alloc>,Ch,Tr,Alloc,Mode>::push_impl<T>(const
> T &,std::streamsize,std::streamsize)' being compiled
> 1> with
> 1> [
> 1> Mode=boost::iostreams::input_seekable
> 1> , Ch=char
> 1> , Tr=std::char_traits<char>
> 1> , Alloc=std::allocator<char>
> 1> ,
> T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
> 1> ]
> 1>
> C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(216)
> : see reference to function template instantiation 'void
> boost::iostreams::detail::chain_base<boost::iostreams::chain<Mode,Ch,Tr,Alloc>,Ch,Tr,Alloc,Mode>::push_impl<T>(const
> T &,std::streamsize,std::streamsize)' being compiled
> 1> with
> 1> [
> 1> Mode=boost::iostreams::input_seekable
> 1> , Ch=char
> 1> , Tr=std::char_traits<char>
> 1> , Alloc=std::allocator<char>
> 1> ,
> T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
> 1> ]
> 1>
> C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(499)
> : see reference to function template instantiation 'void
> boost::iostreams::detail::chain_base<boost::iostreams::chain<Mode,Ch,Tr,Alloc>,Ch,Tr,Alloc,Mode>::push<T>(const
> T &,std::streamsize,std::streamsize,void *)' being compiled
> 1> with
> 1> [
> 1> Mode=boost::iostreams::input_seekable
> 1> , Ch=char
> 1> , Tr=std::char_traits<char>
> 1> , Alloc=std::allocator<char>
> 1> ,
> T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
> 1> ]
> 1>
> C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(499)
> : see reference to function template instantiation 'void
> boost::iostreams::detail::chain_base<boost::iostreams::chain<Mode,Ch,Tr,Alloc>,Ch,Tr,Alloc,Mode>::push<T>(const
> T &,std::streamsize,std::streamsize,void *)' being compiled
> 1> with
> 1> [
> 1> Mode=boost::iostreams::input_seekable
> 1> , Ch=char
> 1> , Tr=std::char_traits<char>
> 1> , Alloc=std::allocator<char>
> 1> ,
> T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
> 1> ]
> 1>
> C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(488)
> : see reference to function template instantiation 'void
> boost::iostreams::detail::chain_client<Self>::push_impl<T>(const T
> &,std::streamsize,std::streamsize)' being compiled
> 1> with
> 1> [
> 1>
> Self=boost::iostreams::chain<boost::iostreams::input_seekable,char,std::char_traits<char>,std::allocator<char>>
> 1> ,
> T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
> 1> ]
> 1>
> C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(488)
> : see reference to function template instantiation 'void
> boost::iostreams::detail::chain_client<Self>::push_impl<T>(const T
> &,std::streamsize,std::streamsize)' being compiled
> 1> with
> 1> [
> 1>
> Self=boost::iostreams::chain<boost::iostreams::input_seekable,char,std::char_traits<char>,std::allocator<char>>
> 1> ,
> T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
> 1> ]
> 1> source\c_archive.cpp(60) : see reference to function template
> instantiation 'void
> boost::iostreams::detail::chain_client<Self>::push<boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>>(const
> T &,std::streamsize,std::streamsize,void *)' being compiled
> 1> with
> 1> [
> 1>
> Self=boost::iostreams::chain<boost::iostreams::input_seekable,char,std::char_traits<char>,std::allocator<char>>
> 1> ,
> T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
> 1> ]
> 1> source\c_archive.cpp(60) : see reference to function template
> instantiation 'void
> boost::iostreams::detail::chain_client<Self>::push<boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>>(const
> T &,std::streamsize,std::streamsize,void *)' being compiled
> 1> with
> 1> [
> 1>
> Self=boost::iostreams::chain<boost::iostreams::input_seekable,char,std::char_traits<char>,std::allocator<char>>
> 1> ,
> T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
> 1> ]
> 1>C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/stream_buffer.hpp(68):
> error C2338: ( is_convertible< BOOST_DEDUCED_TYPENAME
> iostreams::category_of<T>::type, Mode >::value )
> 1>
> C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(257)
> : see reference to class template instantiation
> 'boost::iostreams::stream_buffer<component_type,std::char_traits<char>,Alloc,Mode>'
> being compiled
> 1> with
> 1> [
> 1> Alloc=std::allocator<char>
> 1> , Mode=boost::iostreams::input_seekable
> 1> ]

New description:

 Hello:

 I am trying to use boost:iostream::input_seekable and GZIP decompressor.
 But, when the push function is called the compiler show me the error
 below. I posted the code too.


 {{{
 std::ifstream file("file.tgz");
 boost::iostreams::filtering_streambuf<boost::iostreams::input_seekable>
 in;
 in.push(boost::iostreams::gzip_decompressor());// here the error C2338, if
 I comment this line the error is gone
 in.push(file);
 }}}


 C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(244):
 error C2338: (is_convertible<category, Mode>::value)
 1>
 C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(216)
 : see reference to function template instantiation 'void
 boost::iostreams::detail::chain_base<boost::iostreams::chain<Mode,Ch,Tr,Alloc>,Ch,Tr,Alloc,Mode>::push_impl<T>(const
 T &,std::streamsize,std::streamsize)' being compiled
 1> with
 1> [
 1> Mode=boost::iostreams::input_seekable
 1> , Ch=char
 1> , Tr=std::char_traits<char>
 1> , Alloc=std::allocator<char>
 1> ,
 T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
 1> ]
 1>
 C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(216)
 : see reference to function template instantiation 'void
 boost::iostreams::detail::chain_base<boost::iostreams::chain<Mode,Ch,Tr,Alloc>,Ch,Tr,Alloc,Mode>::push_impl<T>(const
 T &,std::streamsize,std::streamsize)' being compiled
 1> with
 1> [
 1> Mode=boost::iostreams::input_seekable
 1> , Ch=char
 1> , Tr=std::char_traits<char>
 1> , Alloc=std::allocator<char>
 1> ,
 T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
 1> ]
 1>
 C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(499)
 : see reference to function template instantiation 'void
 boost::iostreams::detail::chain_base<boost::iostreams::chain<Mode,Ch,Tr,Alloc>,Ch,Tr,Alloc,Mode>::push<T>(const
 T &,std::streamsize,std::streamsize,void *)' being compiled
 1> with
 1> [
 1> Mode=boost::iostreams::input_seekable
 1> , Ch=char
 1> , Tr=std::char_traits<char>
 1> , Alloc=std::allocator<char>
 1> ,
 T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
 1> ]
 1>
 C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(499)
 : see reference to function template instantiation 'void
 boost::iostreams::detail::chain_base<boost::iostreams::chain<Mode,Ch,Tr,Alloc>,Ch,Tr,Alloc,Mode>::push<T>(const
 T &,std::streamsize,std::streamsize,void *)' being compiled
 1> with
 1> [
 1> Mode=boost::iostreams::input_seekable
 1> , Ch=char
 1> , Tr=std::char_traits<char>
 1> , Alloc=std::allocator<char>
 1> ,
 T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
 1> ]
 1>
 C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(488)
 : see reference to function template instantiation 'void
 boost::iostreams::detail::chain_client<Self>::push_impl<T>(const T
 &,std::streamsize,std::streamsize)' being compiled
 1> with
 1> [
 1>
 Self=boost::iostreams::chain<boost::iostreams::input_seekable,char,std::char_traits<char>,std::allocator<char>>
 1> ,
 T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
 1> ]
 1>
 C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(488)
 : see reference to function template instantiation 'void
 boost::iostreams::detail::chain_client<Self>::push_impl<T>(const T
 &,std::streamsize,std::streamsize)' being compiled
 1> with
 1> [
 1>
 Self=boost::iostreams::chain<boost::iostreams::input_seekable,char,std::char_traits<char>,std::allocator<char>>
 1> ,
 T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
 1> ]
 1> source\c_archive.cpp(60) : see reference to function template
 instantiation 'void
 boost::iostreams::detail::chain_client<Self>::push<boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>>(const
 T &,std::streamsize,std::streamsize,void *)' being compiled
 1> with
 1> [
 1>
 Self=boost::iostreams::chain<boost::iostreams::input_seekable,char,std::char_traits<char>,std::allocator<char>>
 1> ,
 T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
 1> ]
 1> source\c_archive.cpp(60) : see reference to function template
 instantiation 'void
 boost::iostreams::detail::chain_client<Self>::push<boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>>(const
 T &,std::streamsize,std::streamsize,void *)' being compiled
 1> with
 1> [
 1>
 Self=boost::iostreams::chain<boost::iostreams::input_seekable,char,std::char_traits<char>,std::allocator<char>>
 1> ,
 T=boost::iostreams::basic_bzip2_decompressor<std::allocator<char>>
 1> ]
 1>C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/stream_buffer.hpp(68):
 error C2338: ( is_convertible< BOOST_DEDUCED_TYPENAME
 iostreams::category_of<T>::type, Mode >::value )
 1>
 C:\Users\Efrain\Documents\CAMsoftware\trunk\thirdparty\boost\boost/iostreams/chain.hpp(257)
 : see reference to class template instantiation
 'boost::iostreams::stream_buffer<component_type,std::char_traits<char>,Alloc,Mode>'
 being compiled
 1> with
 1> [
 1> Alloc=std::allocator<char>
 1> , Mode=boost::iostreams::input_seekable
 1> ]
 }}}

--
-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/12218#comment:1>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:20 UTC