我可以制作两个 std::ostream-s 的 std::pair 吗?
Can I make std::pair of two std::ostream-s?
我想制作一对包含两个 std::ostream
对象。我需要这个以便我可以将单个对象而不是两个 std::ostream
对象传递给各种函数。我希望我能做到 this:
#include <iostream>
#include <ostream>
using namespace std;
int main(){
std::ostream output( std::cout.rdbuf());
std::ostream error(std::cout.rdbuf());
using Logger = std::pair< std::ostream, std::ostream >;
Logger logger = std::make_pair( output, error );
return 0;
}
但是我得到一个编译器错误,没有 pair<std::basic_ostream<char>, std::basic_ostream<char> >
的匹配构造函数
除了流不支持的复制,您还可以对它们进行成对引用
auto logger{::std::tie(output, error)};
您遇到的问题是ostream
无法复制。
解决方案是使用一对引用:
using Logger = std::pair<std::ostream &, std::ostream &>;
Logger logger { output, error };
我想制作一对包含两个 std::ostream
对象。我需要这个以便我可以将单个对象而不是两个 std::ostream
对象传递给各种函数。我希望我能做到 this:
#include <iostream>
#include <ostream>
using namespace std;
int main(){
std::ostream output( std::cout.rdbuf());
std::ostream error(std::cout.rdbuf());
using Logger = std::pair< std::ostream, std::ostream >;
Logger logger = std::make_pair( output, error );
return 0;
}
但是我得到一个编译器错误,没有 pair<std::basic_ostream<char>, std::basic_ostream<char> >
除了流不支持的复制,您还可以对它们进行成对引用
auto logger{::std::tie(output, error)};
您遇到的问题是ostream
无法复制。
解决方案是使用一对引用:
using Logger = std::pair<std::ostream &, std::ostream &>;
Logger logger { output, error };