Hi, The simplified code compiles correctly under GCC but not MSVC. why ? If I put Option struct in its own named namespace or remove the namespace Util, it compiles correclty. How can I make it work for both compilers ?
Code:#include <vector> #include <iostream> /*default vector IO*/ template <class T> std::ostream& operator << (std::ostream& os, const std::vector<T>& p) { return os; } template <class T> std::istream& operator >> (std::istream& is, std::vector<T>& p) { return is; } /*Utililty functions*/ namespace Util { /*options*/ struct Option { friend std::istream& operator >> (std::istream& is, Option& p) { return is; } friend std::ostream& operator << (std::ostream& os, const Option& p) { return os; } }; /*parameters*/ struct Parameters{ std::vector<int>* test; bool read(std::string str,std::istream& is) { is >> *test; return false; } }; /*end*/ } void main() { Util::Parameters params_vec_int; params_vec_int.read("test",std::cin); }


Reply With Quote
Bookmarks