-2

I'm trying to use std::istream_iterator with glm::vec3. I have tried implementing operator>> but it still won't compile. Can anyone see what I'm doing wrong here?

#include <iostream>
#include <sstream>
#include <istream>
#include <vector>
#include <algorithm>
#include <glm/glm.hpp>

static_assert(std::is_default_constructible<glm::vec3>());

namespace {
    std::ostream& operator<<(std::ostream& out, const glm::vec3& v) {
        out << "(" << v.x << ", " << v.y << ", " << v.z << ")";
        return out;
    }

    std::istream& operator>>(std::istream& in, glm::vec3& v) {
        return in;
    }
}

int main(int argc, char** argv) {
    using InputType = glm::vec3;
    std::vector<InputType> positions;

    std::istringstream iss("1 1 1 1 1 1");

    std::copy(std::istream_iterator<InputType>(iss),
        std::istream_iterator<InputType>(),
        std::back_inserter(positions));

    for (InputType f : positions) {
        std::cout << f << ", ";
    } std::cout << std::endl;
}
Severity    Code    Description Project File    Line    Suppression State
Error   C2679   binary '>>': no operator found which takes a right-hand operand of type '_Ty' (or there is no acceptable conversion)    vkf C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator  297 
Build started...
1>------ Build started: Project: vkf, Configuration: Debug x64 ------
1>XmlTest.cpp
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): error C2679: binary '>>': no operator found which takes a right-hand operand of type '_Ty' (or there is no acceptable conversion)
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(299,39): message : could be 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_streambuf<char,std::char_traits<char>> *)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(295,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(void *&)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(291,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(long double &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(287,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(double &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(283,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(float &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(279,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned __int64 &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(275,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(__int64 &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(271,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned long &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(267,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(long &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(263,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned int &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(255,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(int &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(251,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned short &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(219,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(short &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(215,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(bool &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(186,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::ios_base &(__cdecl *)(std::ios_base &))'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(181,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_ios<char,std::char_traits<char>> &(__cdecl *)(std::basic_ios<char,std::char_traits<char>> &))'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(176,39): message : or       'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_istream<char,std::char_traits<char>> &(__cdecl *)(std::basic_istream<char,std::char_traits<char>> &))'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\cstddef(38,27): message : or       'std::byte std::operator >>(const std::byte,const _IntType) noexcept'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'std::byte std::operator >>(const std::byte,const _IntType) noexcept': could not deduce template argument for '__formal'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\cstddef(38,27): message : or       'std::byte std::operator >>(const std::byte,const _IntType) noexcept'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'std::byte std::operator >>(const std::byte,const _IntType) noexcept': could not deduce template argument for '__formal'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\xstring(5136,32): message : or       'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)': could not deduce template argument for 'std::basic_string<_Elem,_Traits,_Alloc> &' from '_Ty'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(825,32): message : or       'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,_Elem (&)[_Size])'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,_Elem (&)[_Size])': could not deduce template argument for '_Elem (&)[_Size]' from '_Ty'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(831,31): message : or       'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &,signed char (&)[_Size])'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &,signed char (&)[_Size])': could not deduce template argument for 'signed char (&)[_Size]' from '_Ty'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(837,31): message : or       'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &,unsigned char (&)[_Size])'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &,unsigned char (&)[_Size])': could not deduce template argument for 'unsigned char (&)[_Size]' from '_Ty'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(860,32): message : or       'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,_Elem &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,_Elem &)': template parameter '_Elem' is ambiguous
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : could be '_Ty'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : or       'char'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,_Elem &)': could not deduce template argument for '_Elem &' from '_Ty'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(883,31): message : or       'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &,signed char &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,27): message : 'initializing': cannot convert from '_Ty' to 'signed char &'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(889,31): message : or       'std::basic_istream<char,_Traits> &std::operator >>(std::basic_istream<char,_Traits> &,unsigned char &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,27): message : 'initializing': cannot convert from '_Ty' to 'unsigned char &'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\istream(902,9): message : or       '_Istr &&std::operator >>(_Istr &&,_Ty &&)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : '_Istr &&std::operator >>(_Istr &&,_Ty &&)': could not deduce template argument for '__formal'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec2.hpp(365,43): message : or       'glm::vec<2,T,Q> glm::operator >>(const glm::vec<2,T,Q> &,T)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<2,T,Q> glm::operator >>(const glm::vec<2,T,Q> &,T)': could not deduce template argument for 'const glm::vec<2,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec2.hpp(368,43): message : or       'glm::vec<2,T,Q> glm::operator >>(const glm::vec<2,T,Q> &,const glm::vec<1,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<2,T,Q> glm::operator >>(const glm::vec<2,T,Q> &,const glm::vec<1,T,Q> &)': could not deduce template argument for 'const glm::vec<2,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec2.hpp(371,43): message : or       'glm::vec<2,T,Q> glm::operator >>(T,const glm::vec<2,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<2,T,Q> glm::operator >>(T,const glm::vec<2,T,Q> &)': could not deduce template argument for 'const glm::vec<2,T,Q> &' from '_Ty'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec2.hpp(374,43): message : or       'glm::vec<2,T,Q> glm::operator >>(const glm::vec<1,T,Q> &,const glm::vec<2,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<2,T,Q> glm::operator >>(const glm::vec<1,T,Q> &,const glm::vec<2,T,Q> &)': could not deduce template argument for 'const glm::vec<1,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec2.hpp(377,43): message : or       'glm::vec<2,T,Q> glm::operator >>(const glm::vec<2,T,Q> &,const glm::vec<2,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<2,T,Q> glm::operator >>(const glm::vec<2,T,Q> &,const glm::vec<2,T,Q> &)': could not deduce template argument for 'const glm::vec<2,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec3.hpp(398,43): message : or       'glm::vec<3,T,Q> glm::operator >>(const glm::vec<3,T,Q> &,T)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<3,T,Q> glm::operator >>(const glm::vec<3,T,Q> &,T)': could not deduce template argument for 'const glm::vec<3,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec3.hpp(401,43): message : or       'glm::vec<3,T,Q> glm::operator >>(const glm::vec<3,T,Q> &,const glm::vec<1,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<3,T,Q> glm::operator >>(const glm::vec<3,T,Q> &,const glm::vec<1,T,Q> &)': could not deduce template argument for 'const glm::vec<3,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec3.hpp(404,43): message : or       'glm::vec<3,T,Q> glm::operator >>(T,const glm::vec<3,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<3,T,Q> glm::operator >>(T,const glm::vec<3,T,Q> &)': template parameter 'T' is ambiguous
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : could be 'float'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : or       'std::basic_istream<char,std::char_traits<char>>'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<3,T,Q> glm::operator >>(T,const glm::vec<3,T,Q> &)': could not deduce template argument for 'const glm::vec<3,T,Q> &' from '_Ty'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec3.hpp(407,43): message : or       'glm::vec<3,T,Q> glm::operator >>(const glm::vec<1,T,Q> &,const glm::vec<3,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<3,T,Q> glm::operator >>(const glm::vec<1,T,Q> &,const glm::vec<3,T,Q> &)': could not deduce template argument for 'const glm::vec<1,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec3.hpp(410,43): message : or       'glm::vec<3,T,Q> glm::operator >>(const glm::vec<3,T,Q> &,const glm::vec<3,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<3,T,Q> glm::operator >>(const glm::vec<3,T,Q> &,const glm::vec<3,T,Q> &)': could not deduce template argument for 'const glm::vec<3,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec4.hpp(471,43): message : or       'glm::vec<4,T,Q> glm::operator >>(const glm::vec<4,T,Q> &,T)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<4,T,Q> glm::operator >>(const glm::vec<4,T,Q> &,T)': could not deduce template argument for 'const glm::vec<4,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec4.hpp(474,43): message : or       'glm::vec<4,T,Q> glm::operator >>(const glm::vec<4,T,Q> &,const glm::vec<1,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<4,T,Q> glm::operator >>(const glm::vec<4,T,Q> &,const glm::vec<1,T,Q> &)': could not deduce template argument for 'const glm::vec<4,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec4.hpp(477,43): message : or       'glm::vec<4,T,Q> glm::operator >>(T,const glm::vec<4,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<4,T,Q> glm::operator >>(T,const glm::vec<4,T,Q> &)': could not deduce template argument for 'const glm::vec<4,T,Q> &' from '_Ty'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec4.hpp(480,43): message : or       'glm::vec<4,T,Q> glm::operator >>(const glm::vec<1,T,Q> &,const glm::vec<4,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<4,T,Q> glm::operator >>(const glm::vec<1,T,Q> &,const glm::vec<4,T,Q> &)': could not deduce template argument for 'const glm::vec<1,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec4.hpp(483,43): message : or       'glm::vec<4,T,Q> glm::operator >>(const glm::vec<4,T,Q> &,const glm::vec<4,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<4,T,Q> glm::operator >>(const glm::vec<4,T,Q> &,const glm::vec<4,T,Q> &)': could not deduce template argument for 'const glm::vec<4,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec1.hpp(280,43): message : or       'glm::vec<1,T,Q> glm::operator >>(const glm::vec<1,T,Q> &,T)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<1,T,Q> glm::operator >>(const glm::vec<1,T,Q> &,T)': could not deduce template argument for 'const glm::vec<1,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec1.hpp(283,43): message : or       'glm::vec<1,T,Q> glm::operator >>(T,const glm::vec<1,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<1,T,Q> glm::operator >>(T,const glm::vec<1,T,Q> &)': could not deduce template argument for 'const glm::vec<1,T,Q> &' from '_Ty'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\SDK\vcpkg\installed\x64-windows\include\glm\detail\type_vec1.hpp(286,43): message : or       'glm::vec<1,T,Q> glm::operator >>(const glm::vec<1,T,Q> &,const glm::vec<1,T,Q> &)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : 'glm::vec<1,T,Q> glm::operator >>(const glm::vec<1,T,Q> &,const glm::vec<1,T,Q> &)': could not deduce template argument for 'const glm::vec<1,T,Q> &' from 'std::basic_istream<char,std::char_traits<char>>'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(297,15): message : while trying to match the argument list '(std::basic_istream<char,std::char_traits<char>>, _Ty)'
1>        with
1>        [
1>            _Ty=InputType
1>        ]
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(295,10): message : while compiling class template member function 'void std::istream_iterator<InputType,char,std::char_traits<char>,ptrdiff_t>::_Getval(void)'
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\iterator(260,16): message : see the first reference to 'std::istream_iterator<InputType,char,std::char_traits<char>,ptrdiff_t>::_Getval' in 'std::istream_iterator<InputType,char,std::char_traits<char>,ptrdiff_t>::istream_iterator'
1>C:\SDK\vkf\tests\XmlTest.cpp(28,11): message : see the first reference to 'std::istream_iterator<InputType,char,std::char_traits<char>,ptrdiff_t>::istream_iterator' in 'main'
1>C:\SDK\vkf\tests\XmlTest.cpp(28,44): message : see reference to class template instantiation 'std::istream_iterator<InputType,char,std::char_traits<char>,ptrdiff_t>' being compiled
1>Done building project "vkf.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Build started at 5:57 PM and took 01.539 seconds ==========

David Carpenter
  • 1,389
  • 2
  • 16
  • 29
  • 2
    You seem to be missing some vital `#include`s in this code. Or you are intentionally hiding some of your code. Please show a [mre], including the exact errors you are getting. – Drew Dormann Aug 20 '23 at 21:37
  • Updated, not sure what other includes could be needed? – David Carpenter Aug 20 '23 at 21:46
  • What does "won't compile" mean? The most obvious problem is that the input operator never reads anything. That will destroy the end condition for std::copy, just for a start. – BoP Aug 20 '23 at 21:51
  • I included the compile message, and I understand that the input operator doesn't actually do anything yet. I'll do that when finished fighting with the compiler – David Carpenter Aug 20 '23 at 21:53
  • I think having the operators in an anonymous namespace won't be helping. You should look at the compiler output window rather than the errors list which is just a summary and often misses key details – Alan Birtles Aug 20 '23 at 21:54
  • I tried commenting that out, made no difference – David Carpenter Aug 20 '23 at 21:55
  • added the compiler output – David Carpenter Aug 20 '23 at 22:00
  • 1
    This works fine in the big 3: https://godbolt.org/z/nbeMvGvqs I removed the anonymous namespace, made the input actually work, added a simple vec3 struct and added `#include `. – Retired Ninja Aug 20 '23 at 22:06
  • changing to simple vec3 struct seems to be what fixed it, do you know how I can make this work with glm::vec3 though? – David Carpenter Aug 20 '23 at 22:14
  • iss>>positions[0]; works fine std::istream_iterator(iss) kills it. as if thic couldn't handle the namspace – Botond Horváth Aug 20 '23 at 22:20
  • i removed the anonymous namespace and it compiles now, oddly enough it works with `struct vec3 : glm::vec3 {};` but not `using vec3 = glm::vec3`. not sure why... – David Carpenter Aug 20 '23 at 22:24
  • 1
    If you put the operators in the `glm` namespace it works. https://godbolt.org/z/Gs5aMErGP Not sure if this is a good solution or not. – Retired Ninja Aug 20 '23 at 22:24
  • that seems to be the fix i was looking for! tyvm ninja, any reason you would doubt it being a good solution though? – David Carpenter Aug 20 '23 at 22:27
  • It has to be in either the glm or std namespaces for ADL to work – Alan Birtles Aug 20 '23 at 22:59
  • thanks, but what is ADL? – David Carpenter Aug 20 '23 at 23:04
  • [What is "Argument-Dependent Lookup" (aka ADL, or "Koenig Lookup")?](https://stackoverflow.com/questions/8111677/what-is-argument-dependent-lookup-aka-adl-or-koenig-lookup) The reason I can't say it's a good solution is because it isn't code I would write if there were any alternative that did not require it. If I decided to stop using glm in the future it'd be a headache. If glm added those operators, another headache. But that's just me. I try to stick to the simplest code that gets the job done, and stream iterators and such usually aren't part of it. – Retired Ninja Aug 20 '23 at 23:16

0 Answers0