Boost logo

Boost Users :

Subject: [Boost-users] ambiguous overload for operator>> error when using lexical_cast with qvm::vec
From: kique G (kique.g_at_[hidden])
Date: 2016-09-17 05:20:06


Hi,

I am trying to use lexical_cast to convert from strings to qvm vectors, but
I keep getting an ambiguous operator>> error. I have overloaded the >>
operator for istreams and that seems to be working fine when I use it to
read from a istringstream. In a lexical_cast, though, I get the "ambiguous
overload for operator>>" error. I have tried declaring my operator>>
overload inside the std and boost::qvm namespaces to check if it was
something related to ADL, but I keep getting the same error. The thing is
the other candidates do not seem to make a lot of sense to me. Could
somebody please tell me what I am doing wrong?

Thanks in advance,

Enrique Garcia

This is a minimal example (I am building gcc/boost from the last versions
on their repositories):

#include <iostream>
#include <boost/qvm/vec.hpp>
#include <boost/lexical_cast.hpp>

std::ostream& operator<<(std::ostream& out, boost::qvm::vec<float, 3>
const& v)
{
  out << "(" << v.a[0] << "," << v.a[1] << "," << v.a[2] << ")";
}

std::istream& operator>>(std::istream& in, boost::qvm::vec<float, 3>& v)
{
  char c;
  return in >> c >> v.a[0] >> c >> v.a[1] >> c >> v.a[2] >> c;
}

int main()
{
  boost::qvm::vec<float, 3> vect { 1.0f, 2.0f, 3.0f };
  std::cout << vect << std::endl;

  // This code works just fine. (4.0,5.0,6.0) is printed
  std::istringstream istream("(4.0,5.0,6.0");
  istream >> vect;
  std::cout << vect << std::endl;

  // This code generates an ambiguous overload for operator>> error (see
below)
  vect = boost::lexical_cast<boost::qvm::vec<float, 3>>("(1.0,2.0,3.0)");
  std::cout << vect << std::endl;

  return 0;
}

This is the error I am getting from gcc:

In file included from /usr/local/include/boost/config.hpp:61:0,

from /usr/local/include/boost/static_assert.hpp:17,

from /usr/local/include/boost/qvm/static_assert.hpp:7,

from /usr/local/include/boost/qvm/vec.hpp:11,

from /home/kique/Documents/Bitflow2x/source/main.cpp:57:

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp: In
instantiation of 'const bool
boost::detail::has_right_shift_impl::operator_exists<std::basic_istream<char>,
boost::qvm::vec<float, 3> >::value':

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:179:4:
required from 'const bool
boost::detail::has_right_shift_impl::trait_impl1<std::basic_istream<char>,
boost::qvm::vec<float, 3>, boost::detail::has_right_shift_impl::dont_care,
false>::value'

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:208:4:
required from 'const bool
boost::detail::has_right_shift_impl::trait_impl<std::basic_istream<char>,
boost::qvm::vec<float, 3>,
boost::detail::has_right_shift_impl::dont_care>::value'

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:216:8:
required from 'struct boost::has_right_shift<std::basic_istream<char>,
boost::qvm::vec<float, 3>, boost::detail::has_right_shift_impl::dont_care>'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:241:21:
required from 'struct
boost::detail::deduce_target_char_impl<boost::detail::deduce_character_type_later<boost::qvm::vec<float,
3> > >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:270:89:
required from 'struct
boost::detail::deduce_target_char<boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:407:92:
required from 'struct boost::detail::lexical_cast_stream_traits<const
char*, boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:468:15:
required from 'struct
boost::detail::lexical_converter_impl<boost::qvm::vec<float, 3>, const
char*>'

/usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:196:44:
required from 'bool boost::conversion::detail::try_lexical_convert(const
Source&, Target&) [with Target = boost::qvm::vec<float, 3>; Source = char
[14]]'

/usr/local/include/boost/lexical_cast.hpp:41:60: required from 'Target
boost::lexical_cast(const Source&) [with Target = boost::qvm::vec<float,
3>; Source = char [14]]'

/home/kique/Documents/Bitflow2x/source/main.cpp:83:72: required from here

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:158:70:
error: ambiguous overload for 'operator>>' (operand types are
'std::basic_istream<char>' and 'boost::qvm::vec<float, 3>')

BOOST_STATIC_CONSTANT(bool, value = (sizeof(s_check(((make<Lhs>()
BOOST_TT_TRAIT_OP
make<Rhs>()),make<has_operator>())))==sizeof(::boost::type_traits::yes_type)));

^

In file included from /usr/local/include/c++/7.0.0/iostream:40:0,

from /home/kique/Documents/Bitflow2x/source/main.cpp:56:

/usr/local/include/c++/7.0.0/istream:120:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__istream_type& (*)(std::basic_istream<_CharT,
_Traits>::__istream_type&)) [with _CharT = char; _Traits =
std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type
= std::basic_istream<char>]

operator>>(__istream_type& (*__pf)(__istream_type&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:124:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__ios_type& (*)(std::basic_istream<_CharT,
_Traits>::__ios_type&)) [with _CharT = char; _Traits =
std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type
= std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type
= std::basic_ios<char>]

operator>>(__ios_type& (*__pf)(__ios_type&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:131:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base&
(*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>;
std::basic_istream<_CharT, _Traits>::__istream_type =
std::basic_istream<char>]

operator>>(ios_base& (*__pf)(ios_base&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:259:7: note: candidate:
std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__streambuf_type*) [with _CharT = char; _Traits =
std::char_traits<char>; std::basic_istream<_CharT,
_Traits>::__streambuf_type = std::basic_streambuf<char>]

operator>>(__streambuf_type* __sb);

^~~~~~~~

In file included from
/usr/local/include/boost/type_traits/has_right_shift.hpp:43:0,

from /usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:39,

from /usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:42,

from /usr/local/include/boost/lexical_cast.hpp:32,

from /home/kique/Documents/Bitflow2x/source/main.cpp:58:

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:70:13:
note: candidate: boost::detail::has_right_shift_impl::no_operator
boost::detail::has_right_shift_impl::operator>>(const
boost::detail::has_right_shift_impl::any&, const
boost::detail::has_right_shift_impl::any&)

no_operator operator BOOST_TT_TRAIT_OP (const any&, const any&);

^~~~~~~~

In file included from /usr/local/include/c++/7.0.0/iostream:40:0,

from /home/kique/Documents/Bitflow2x/source/main.cpp:56:

/usr/local/include/c++/7.0.0/istream:808:5: note: candidate:
std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char,
_Traits>&, signed char*) [with _Traits = std::char_traits<char>]

operator>>(basic_istream<char, _Traits>& __in, signed char* __s)

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:803:5: note: candidate:
std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char,
_Traits>&, unsigned char*) [with _Traits = std::char_traits<char>]

operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)

^~~~~~~~

In file included from /usr/local/include/boost/config.hpp:61:0,

from /usr/local/include/boost/static_assert.hpp:17,

from /usr/local/include/boost/qvm/static_assert.hpp:7,

from /usr/local/include/boost/qvm/vec.hpp:11,

from /home/kique/Documents/Bitflow2x/source/main.cpp:57:

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp: In
instantiation of 'const bool
boost::detail::has_right_shift_impl::operator_returns_void<std::basic_istream<char>,
boost::qvm::vec<float, 3> >::value':

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:179:4:
required from 'const bool
boost::detail::has_right_shift_impl::trait_impl1<std::basic_istream<char>,
boost::qvm::vec<float, 3>, boost::detail::has_right_shift_impl::dont_care,
false>::value'

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:208:4:
required from 'const bool
boost::detail::has_right_shift_impl::trait_impl<std::basic_istream<char>,
boost::qvm::vec<float, 3>,
boost::detail::has_right_shift_impl::dont_care>::value'

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:216:8:
required from 'struct boost::has_right_shift<std::basic_istream<char>,
boost::qvm::vec<float, 3>, boost::detail::has_right_shift_impl::dont_care>'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:241:21:
required from 'struct
boost::detail::deduce_target_char_impl<boost::detail::deduce_character_type_later<boost::qvm::vec<float,
3> > >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:270:89:
required from 'struct
boost::detail::deduce_target_char<boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:407:92:
required from 'struct boost::detail::lexical_cast_stream_traits<const
char*, boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:468:15:
required from 'struct
boost::detail::lexical_converter_impl<boost::qvm::vec<float, 3>, const
char*>'

/usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:196:44:
required from 'bool boost::conversion::detail::try_lexical_convert(const
Source&, Target&) [with Target = boost::qvm::vec<float, 3>; Source = char
[14]]'

/usr/local/include/boost/lexical_cast.hpp:41:60: required from 'Target
boost::lexical_cast(const Source&) [with Target = boost::qvm::vec<float,
3>; Source = char [14]]'

/home/kique/Documents/Bitflow2x/source/main.cpp:83:72: required from here

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:95:114:
error: ambiguous overload for 'operator>>' (operand types are
'std::basic_istream<char>' and 'boost::qvm::vec<float, 3>')

BOOST_STATIC_CONSTANT(bool, value =
(sizeof(::boost::type_traits::yes_type)==sizeof(returns_void((make<Lhs>()
BOOST_TT_TRAIT_OP make<Rhs>(),returns_void_t())))));

^

In file included from /usr/local/include/c++/7.0.0/iostream:40:0,

from /home/kique/Documents/Bitflow2x/source/main.cpp:56:

/usr/local/include/c++/7.0.0/istream:120:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__istream_type& (*)(std::basic_istream<_CharT,
_Traits>::__istream_type&)) [with _CharT = char; _Traits =
std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type
= std::basic_istream<char>]

operator>>(__istream_type& (*__pf)(__istream_type&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:124:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__ios_type& (*)(std::basic_istream<_CharT,
_Traits>::__ios_type&)) [with _CharT = char; _Traits =
std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type
= std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type
= std::basic_ios<char>]

operator>>(__ios_type& (*__pf)(__ios_type&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:131:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base&
(*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>;
std::basic_istream<_CharT, _Traits>::__istream_type =
std::basic_istream<char>]

operator>>(ios_base& (*__pf)(ios_base&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:259:7: note: candidate:
std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__streambuf_type*) [with _CharT = char; _Traits =
std::char_traits<char>; std::basic_istream<_CharT,
_Traits>::__streambuf_type = std::basic_streambuf<char>]

operator>>(__streambuf_type* __sb);

^~~~~~~~

In file included from
/usr/local/include/boost/type_traits/has_right_shift.hpp:43:0,

from /usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:39,

from /usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:42,

from /usr/local/include/boost/lexical_cast.hpp:32,

from /home/kique/Documents/Bitflow2x/source/main.cpp:58:

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:70:13:
note: candidate: boost::detail::has_right_shift_impl::no_operator
boost::detail::has_right_shift_impl::operator>>(const
boost::detail::has_right_shift_impl::any&, const
boost::detail::has_right_shift_impl::any&)

no_operator operator BOOST_TT_TRAIT_OP (const any&, const any&);

^~~~~~~~

In file included from /usr/local/include/c++/7.0.0/iostream:40:0,

from /home/kique/Documents/Bitflow2x/source/main.cpp:56:

/usr/local/include/c++/7.0.0/istream:808:5: note: candidate:
std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char,
_Traits>&, signed char*) [with _Traits = std::char_traits<char>]

operator>>(basic_istream<char, _Traits>& __in, signed char* __s)

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:803:5: note: candidate:
std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char,
_Traits>&, unsigned char*) [with _Traits = std::char_traits<char>]

operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)

^~~~~~~~

In file included from
/usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:42:0,

from /usr/local/include/boost/lexical_cast.hpp:32,

from /home/kique/Documents/Bitflow2x/source/main.cpp:58:

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp: In
instantiation of 'struct
boost::detail::deduce_target_char_impl<boost::detail::deduce_character_type_later<boost::qvm::vec<float,
3> > >':

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:270:89:
required from 'struct
boost::detail::deduce_target_char<boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:407:92:
required from 'struct boost::detail::lexical_cast_stream_traits<const
char*, boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:468:15:
required from 'struct
boost::detail::lexical_converter_impl<boost::qvm::vec<float, 3>, const
char*>'

/usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:196:44:
required from 'bool boost::conversion::detail::try_lexical_convert(const
Source&, Target&) [with Target = boost::qvm::vec<float, 3>; Source = char
[14]]'

/usr/local/include/boost/lexical_cast.hpp:41:60: required from 'Target
boost::lexical_cast(const Source&) [with Target = boost::qvm::vec<float,
3>; Source = char [14]]'

/home/kique/Documents/Bitflow2x/source/main.cpp:83:72: required from here

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:241:21:
error: 'value' is not a member of
'boost::has_right_shift<std::basic_istream<char>, boost::qvm::vec<float,
3>, boost::detail::has_right_shift_impl::dont_care>'

>::type type;

^~~~

In file included from /usr/local/include/boost/qvm/static_assert.hpp:7:0,

from /usr/local/include/boost/qvm/vec.hpp:11,

from /home/kique/Documents/Bitflow2x/source/main.cpp:57:

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:243:13:
error: 'value' is not a member of
'boost::detail::deduce_target_char_impl<boost::detail::deduce_character_type_later<boost::qvm::vec<float,
3> > >::result_t {aka boost::has_right_shift<std::basic_istream<char>,
boost::qvm::vec<float, 3>, boost::detail::has_right_shift_impl::dont_care>}'

BOOST_STATIC_ASSERT_MSG((result_t::value ||
boost::has_right_shift<std::basic_istream<wchar_t>, T >::value),

^

In file included from /usr/local/include/boost/config.hpp:61:0,

from /usr/local/include/boost/static_assert.hpp:17,

from /usr/local/include/boost/qvm/static_assert.hpp:7,

from /usr/local/include/boost/qvm/vec.hpp:11,

from /home/kique/Documents/Bitflow2x/source/main.cpp:57:

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp: In
instantiation of 'const bool
boost::detail::has_right_shift_impl::operator_exists<std::basic_istream<wchar_t>,
boost::qvm::vec<float, 3> >::value':

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:179:4:
required from 'const bool
boost::detail::has_right_shift_impl::trait_impl1<std::basic_istream<wchar_t>,
boost::qvm::vec<float, 3>, boost::detail::has_right_shift_impl::dont_care,
false>::value'

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:208:4:
required from 'const bool
boost::detail::has_right_shift_impl::trait_impl<std::basic_istream<wchar_t>,
boost::qvm::vec<float, 3>,
boost::detail::has_right_shift_impl::dont_care>::value'

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:216:8:
required from 'struct boost::has_right_shift<std::basic_istream<wchar_t>,
boost::qvm::vec<float, 3>, boost::detail::has_right_shift_impl::dont_care>'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:243:13:
required from 'struct
boost::detail::deduce_target_char_impl<boost::detail::deduce_character_type_later<boost::qvm::vec<float,
3> > >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:270:89:
required from 'struct
boost::detail::deduce_target_char<boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:407:92:
required from 'struct boost::detail::lexical_cast_stream_traits<const
char*, boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:468:15:
required from 'struct
boost::detail::lexical_converter_impl<boost::qvm::vec<float, 3>, const
char*>'

/usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:196:44:
required from 'bool boost::conversion::detail::try_lexical_convert(const
Source&, Target&) [with Target = boost::qvm::vec<float, 3>; Source = char
[14]]'

/usr/local/include/boost/lexical_cast.hpp:41:60: required from 'Target
boost::lexical_cast(const Source&) [with Target = boost::qvm::vec<float,
3>; Source = char [14]]'

/home/kique/Documents/Bitflow2x/source/main.cpp:83:72: required from here

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:158:70:
error: ambiguous overload for 'operator>>' (operand types are
'std::basic_istream<wchar_t>' and 'boost::qvm::vec<float, 3>')

BOOST_STATIC_CONSTANT(bool, value = (sizeof(s_check(((make<Lhs>()
BOOST_TT_TRAIT_OP
make<Rhs>()),make<has_operator>())))==sizeof(::boost::type_traits::yes_type)));

^

In file included from /usr/local/include/c++/7.0.0/iostream:40:0,

from /home/kique/Documents/Bitflow2x/source/main.cpp:56:

/usr/local/include/c++/7.0.0/istream:120:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__istream_type& (*)(std::basic_istream<_CharT,
_Traits>::__istream_type&)) [with _CharT = wchar_t; _Traits =
std::char_traits<wchar_t>; std::basic_istream<_CharT,
_Traits>::__istream_type = std::basic_istream<wchar_t>]

operator>>(__istream_type& (*__pf)(__istream_type&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:124:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__ios_type& (*)(std::basic_istream<_CharT,
_Traits>::__ios_type&)) [with _CharT = wchar_t; _Traits =
std::char_traits<wchar_t>; std::basic_istream<_CharT,
_Traits>::__istream_type = std::basic_istream<wchar_t>;
std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<wchar_t>]

operator>>(__ios_type& (*__pf)(__ios_type&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:131:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base&
(*)(std::ios_base&)) [with _CharT = wchar_t; _Traits =
std::char_traits<wchar_t>; std::basic_istream<_CharT,
_Traits>::__istream_type = std::basic_istream<wchar_t>]

operator>>(ios_base& (*__pf)(ios_base&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:259:7: note: candidate:
std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__streambuf_type*) [with _CharT = wchar_t; _Traits =
std::char_traits<wchar_t>; std::basic_istream<_CharT,
_Traits>::__streambuf_type = std::basic_streambuf<wchar_t>]

operator>>(__streambuf_type* __sb);

^~~~~~~~

In file included from
/usr/local/include/boost/type_traits/has_right_shift.hpp:43:0,

from /usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:39,

from /usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:42,

from /usr/local/include/boost/lexical_cast.hpp:32,

from /home/kique/Documents/Bitflow2x/source/main.cpp:58:

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:70:13:
note: candidate: boost::detail::has_right_shift_impl::no_operator
boost::detail::has_right_shift_impl::operator>>(const
boost::detail::has_right_shift_impl::any&, const
boost::detail::has_right_shift_impl::any&)

no_operator operator BOOST_TT_TRAIT_OP (const any&, const any&);

^~~~~~~~

In file included from /usr/local/include/boost/config.hpp:61:0,

from /usr/local/include/boost/static_assert.hpp:17,

from /usr/local/include/boost/qvm/static_assert.hpp:7,

from /usr/local/include/boost/qvm/vec.hpp:11,

from /home/kique/Documents/Bitflow2x/source/main.cpp:57:

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp: In
instantiation of 'const bool
boost::detail::has_right_shift_impl::operator_returns_void<std::basic_istream<wchar_t>,
boost::qvm::vec<float, 3> >::value':

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:179:4:
required from 'const bool
boost::detail::has_right_shift_impl::trait_impl1<std::basic_istream<wchar_t>,
boost::qvm::vec<float, 3>, boost::detail::has_right_shift_impl::dont_care,
false>::value'

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:208:4:
required from 'const bool
boost::detail::has_right_shift_impl::trait_impl<std::basic_istream<wchar_t>,
boost::qvm::vec<float, 3>,
boost::detail::has_right_shift_impl::dont_care>::value'

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:216:8:
required from 'struct boost::has_right_shift<std::basic_istream<wchar_t>,
boost::qvm::vec<float, 3>, boost::detail::has_right_shift_impl::dont_care>'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:243:13:
required from 'struct
boost::detail::deduce_target_char_impl<boost::detail::deduce_character_type_later<boost::qvm::vec<float,
3> > >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:270:89:
required from 'struct
boost::detail::deduce_target_char<boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:407:92:
required from 'struct boost::detail::lexical_cast_stream_traits<const
char*, boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:468:15:
required from 'struct
boost::detail::lexical_converter_impl<boost::qvm::vec<float, 3>, const
char*>'

/usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:196:44:
required from 'bool boost::conversion::detail::try_lexical_convert(const
Source&, Target&) [with Target = boost::qvm::vec<float, 3>; Source = char
[14]]'

/usr/local/include/boost/lexical_cast.hpp:41:60: required from 'Target
boost::lexical_cast(const Source&) [with Target = boost::qvm::vec<float,
3>; Source = char [14]]'

/home/kique/Documents/Bitflow2x/source/main.cpp:83:72: required from here

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:95:114:
error: ambiguous overload for 'operator>>' (operand types are
'std::basic_istream<wchar_t>' and 'boost::qvm::vec<float, 3>')

BOOST_STATIC_CONSTANT(bool, value =
(sizeof(::boost::type_traits::yes_type)==sizeof(returns_void((make<Lhs>()
BOOST_TT_TRAIT_OP make<Rhs>(),returns_void_t())))));

^

In file included from /usr/local/include/c++/7.0.0/iostream:40:0,

from /home/kique/Documents/Bitflow2x/source/main.cpp:56:

/usr/local/include/c++/7.0.0/istream:120:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__istream_type& (*)(std::basic_istream<_CharT,
_Traits>::__istream_type&)) [with _CharT = wchar_t; _Traits =
std::char_traits<wchar_t>; std::basic_istream<_CharT,
_Traits>::__istream_type = std::basic_istream<wchar_t>]

operator>>(__istream_type& (*__pf)(__istream_type&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:124:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__ios_type& (*)(std::basic_istream<_CharT,
_Traits>::__ios_type&)) [with _CharT = wchar_t; _Traits =
std::char_traits<wchar_t>; std::basic_istream<_CharT,
_Traits>::__istream_type = std::basic_istream<wchar_t>;
std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<wchar_t>]

operator>>(__ios_type& (*__pf)(__ios_type&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:131:7: note: candidate:
std::basic_istream<_CharT, _Traits>::__istream_type&
std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base&
(*)(std::ios_base&)) [with _CharT = wchar_t; _Traits =
std::char_traits<wchar_t>; std::basic_istream<_CharT,
_Traits>::__istream_type = std::basic_istream<wchar_t>]

operator>>(ios_base& (*__pf)(ios_base&))

^~~~~~~~

/usr/local/include/c++/7.0.0/istream:259:7: note: candidate:
std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,
_Traits>::operator>>(std::basic_istream<_CharT,
_Traits>::__streambuf_type*) [with _CharT = wchar_t; _Traits =
std::char_traits<wchar_t>; std::basic_istream<_CharT,
_Traits>::__streambuf_type = std::basic_streambuf<wchar_t>]

operator>>(__streambuf_type* __sb);

^~~~~~~~

In file included from
/usr/local/include/boost/type_traits/has_right_shift.hpp:43:0,

from /usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:39,

from /usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:42,

from /usr/local/include/boost/lexical_cast.hpp:32,

from /home/kique/Documents/Bitflow2x/source/main.cpp:58:

/usr/local/include/boost/type_traits/detail/has_binary_operator.hpp:70:13:
note: candidate: boost::detail::has_right_shift_impl::no_operator
boost::detail::has_right_shift_impl::operator>>(const
boost::detail::has_right_shift_impl::any&, const
boost::detail::has_right_shift_impl::any&)

no_operator operator BOOST_TT_TRAIT_OP (const any&, const any&);

^~~~~~~~

In file included from /usr/local/include/boost/qvm/static_assert.hpp:7:0,

from /usr/local/include/boost/qvm/vec.hpp:11,

from /home/kique/Documents/Bitflow2x/source/main.cpp:57:

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp: In
instantiation of 'struct
boost::detail::deduce_target_char_impl<boost::detail::deduce_character_type_later<boost::qvm::vec<float,
3> > >':

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:270:89:
required from 'struct
boost::detail::deduce_target_char<boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:407:92:
required from 'struct boost::detail::lexical_cast_stream_traits<const
char*, boost::qvm::vec<float, 3> >'

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:468:15:
required from 'struct
boost::detail::lexical_converter_impl<boost::qvm::vec<float, 3>, const
char*>'

/usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:196:44:
required from 'bool boost::conversion::detail::try_lexical_convert(const
Source&, Target&) [with Target = boost::qvm::vec<float, 3>; Source = char
[14]]'

/usr/local/include/boost/lexical_cast.hpp:41:60: required from 'Target
boost::lexical_cast(const Source&) [with Target = boost::qvm::vec<float,
3>; Source = char [14]]'

/home/kique/Documents/Bitflow2x/source/main.cpp:83:72: required from here

/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:243:13:
error: 'value' is not a member of
'boost::has_right_shift<std::basic_istream<wchar_t>, boost::qvm::vec<float,
3>, boost::detail::has_right_shift_impl::dont_care>'

BOOST_STATIC_ASSERT_MSG((result_t::value ||
boost::has_right_shift<std::basic_istream<wchar_t>, T >::value),

^

ninja: build stopped: subcommand failed.



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