[Filesystem] Hidden overloaded virtual function
./boost/detail/utf8_codecvt_facet.hpp:171:17: warning:
'boost::filesystem::detail::utf8_codecvt_facet::do_length' hides
overloaded virtual function [-Woverloaded-virtual]
virtual int do_length(
^
/usr/include/c++/v1/__locale:952:17: note: hidden overloaded virtual
function 'std::__1::codecvt
On 19/12/13 13:18, Ben Pope wrote:
I suspect that's not intentional.
Hmm, already reported. Ping? https://svn.boost.org/trac/boost/ticket/7660 Ben
On Dec 18, 2013, at 9:21 PM, Ben Pope
On 19/12/13 13:18, Ben Pope wrote:
I suspect that's not intentional.
Hmm, already reported. Ping?
This is more complicated than it looks, because some standard libraries declare do_length as: ‘virtual int do_length(mbstate_t&, const char*, const char*, size_t) const’ and others as: 'virtual int do_length(const mbstate_t&, const char*, const char*, size_t) const’ This was changed in the C++ standard back about the 2004 (changed TO const mbstate_t) but the Dinkumware library shipped with Visual Studio (for one) was not updated until very recently. [ I believe that it is changed for VS 2013 ] I tried to fix this once - I broke one of the serialization tests. Robert Ramey has been looking into this as well. — Marshall
[Marshall Clow]
This is more complicated than it looks, because some standard libraries declare do_length as: 'virtual int do_length(mbstate_t&, const char*, const char*, size_t) const' and others as: 'virtual int do_length(const mbstate_t&, const char*, const char*, size_t) const' This was changed in the C++ standard back about the 2004 (changed TO const mbstate_t) but the Dinkumware library shipped with Visual Studio (for one) was not updated until very recently. [ I believe that it is changed for VS 2013 ]
This was actually fixed in VC 2012. STL
Marshall Clow wrote:
This is more complicated than it looks, because some standard libraries declare do_length as:
‘virtual int do_length(mbstate_t&, const char*, const char*, size_t) const’
and others as:
'virtual int do_length(const mbstate_t&, const char*, const char*, size_t) const’
The easiest fix is probably to just define both.
This was changed in the C++ standard back about the 2004 (changed TO const mbstate_t)
C++11 has it non-const as far as I can see.
On 20/12/13 09:25, Marshall Clow wrote:
On Dec 18, 2013, at 9:21 PM, Ben Pope
wrote: On 19/12/13 13:18, Ben Pope wrote:
I suspect that's not intentional.
Hmm, already reported. Ping?
This is more complicated than it looks, because some standard libraries declare do_length as: ‘virtual int do_length(mbstate_t&, const char*, const char*, size_t) const’ and others as: 'virtual int do_length(const mbstate_t&, const char*, const char*, size_t) const’
This was changed in the C++ standard back about the 2004 (changed TO const mbstate_t)
FROM const&, right? http://isocpp.org/files/papers/N3797.pdf 22.4.1.4 has it as non-const. I've checked VC2013, g++4.8.2 and libc++ and they all take it by non const.
but the Dinkumware library shipped with Visual Studio (for one) was not updated until very recently. [ I believe that it is changed for VS 2013 ]
I tried to fix this once - I broke one of the serialization tests. Robert Ramey has been looking into this as well.
Thanks, Ben
participants (4)
-
Ben Pope
-
Marshall Clow
-
Peter Dimov
-
Stephan T. Lavavej