Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. template< typename T = double> struct Box;
  5. template <typename T, int size > struct Arr;
  6.  
  7. template<>
  8. struct Box<>{
  9. double val;
  10. Box(double v): val(v){}
  11. friend std::ostream& operator<<(std::ostream& o, const Box<double>& b){
  12. return o <<b.val;}
  13. };
  14.  
  15. template<>
  16. struct Box<int>{
  17. int val;
  18. Box(int v): val(v){}
  19. friend std::ostream& operator<<(std::ostream& o, const Box<int>& b){
  20. return o<<b.val;}
  21. };
  22.  
  23. template <typename T, int size>
  24. struct Arr{
  25. int arr[size];
  26. Arr(){
  27. for (int i=1; i<=size; i++){
  28. arr[i-1] = i;
  29. }
  30. }
  31. int* begin(){return *arr;}
  32. int* end(){return *(arr+size);}
  33.  
  34. };
  35.  
  36. using make_Box = Box<>;
  37.  
  38. int main(){
  39. std::cout<< Box<int>(26.02) << std::endl; //wypisuje typ Box<int>
  40. std::cout<< make_Box(26.02) <<std::endl; //wypisuje typ Box<...>
  41. for (auto _ : Arr<<Box<int>,5>()){
  42. std::cout<< _ << ", " <<std::endl;}
  43. }
  44. /*output:
  45. 26
  46. 26.02
  47. 1, 2, 3, 4, 5,
  48. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement