Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include"base/dependencies/index.hpp"
- #include"shortcuts.hpp"
- // Read the given arguments in order from the given input stream.
- template<class...Types>
- istream&read(istream&is,Types&...args){return(is>>...>>args);}
- // Pair input overload.
- template<class Fst,class Snd>
- istream&operator>>(istream&is,pair<Fst,Snd>&p){return is>>p.first>>p.second;}
- // Tuple input overload.
- template<class...Types>istream&operator>>(istream&is,tuple<Types...>&t){
- apply([&is](Types&...args){read(is,args...);},t);
- return is;
- }
- // Array input overload.
- template<class Type,size_t Size>
- istream&operator>>(istream&is,array<Type,Size>&a){
- FORIT(it,a){is>>*it;}
- return is;
- }
- // Valarray input overload.
- template<class Type>istream&operator>>(istream&is,valarray<Type>&va){
- FORIT(it,va){is>>*it;}
- return is;
- }
- // Vector input overload.
- template<class Type>istream&operator>>(istream&is,vector<Type>&v){
- FORIT(it,v){
- Type e;
- is>>e,*it=move(e);
- }
- return is;
- }
Advertisement
Add Comment
Please, Sign In to add comment