Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- template< typename T = double> struct Box;
- template <typename T, int size > struct Arr;
- template<>
- struct Box<>{
- double val;
- Box(double v): val(v){}
- friend std::ostream& operator<<(std::ostream& o, const Box<double>& b){
- return o <<b.val;}
- };
- template<>
- struct Box<int>{
- int val;
- Box(int v): val(v){}
- friend std::ostream& operator<<(std::ostream& o, const Box<int>& b){
- return o<<b.val;}
- };
- template <typename T, int size>
- struct Arr{
- int arr[size];
- int count = 0;
- Arr(){
- for (int i=1; i<=size; i++){
- arr[i-1] = i;
- }
- }
- int* begin(){return *arr;}
- int* end(){return *(arr+size);}
- std::ostream& operator<<(std::ostream& s, const Arr<int>& a){
- s<<a.arr[count];
- a.count++;
- return s;
- }
- };
- using make_Box = Box<>;
- int main(){
- std::cout<< Box<int>(26.02) << std::endl; //wypisuje typ Box<int>
- std::cout<< make_Box(26.02) <<std::endl; //wypisuje typ Box<...>
- for (auto _ : Arr<<Box<int>,5>()){
- std::cout<< _ << ", " <<std::endl;}
- }
- /*output:
- 26
- 26.02
- 1, 2, 3, 4, 5,
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement