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);
}