
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.