Advertisement
Guest User

Untitled

a guest
Nov 26th, 2015
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. class NVBase
  2. {
  3. protected:
  4.  
  5.     virtual void virtualAction (void * ...) = 0;
  6. };
  7.  
  8. template <typename RetType, typename ... ArgTypes>
  9. struct VBase : private NVBase
  10. {
  11.     RetType makeBorsch (ArgTypes ... args)
  12.     {
  13.         RetType output;
  14.         virtualAction (&output, args ...);
  15.         return output;
  16.     }
  17. };
  18.  
  19. template <typename T, typename P>
  20. class YourMomma : public VBase <T, P>
  21. {
  22.     void virtualAction (void * out_ptr ...) override
  23.     {
  24.         auto typed_out = static_cast <T *> (out_ptr);
  25.  
  26.         va_list data;
  27.         va_start (data, out_ptr);
  28.  
  29.         auto arg1 = va_arg (data, P);
  30.  
  31.         //борщ среднестатистичекой мамки
  32.     }
  33.  
  34.     //...
  35.  
  36. public:
  37.  
  38.     //...
  39. };
  40.  
  41. class WhoreSister : public YourMomma <int, double>
  42. {
  43.     void virtualAction (void * out_ptr ...) override
  44.     {
  45.         auto typed_out = static_cast <int *> (out_ptr);
  46.  
  47.         va_list data;
  48.         va_start (data, out_ptr);
  49.  
  50.         auto arg1 = va_arg (data, double);
  51.  
  52.         //борщ твоей сестры-шлюхи
  53.     }
  54.  
  55.     //...
  56.  
  57. public:
  58.  
  59.     //...
  60. };
  61.  
  62. //...
  63.  
  64. WhoreSister anya {};
  65. YourMomma <int, double> nadezhda_srakovna {};
  66. YourMomma <int, double> & anya_ref = anya;
  67. YourMomma <int, double> & mamka_ref = nadezhda_srakovna;
  68.  
  69. anya_ref.makeBorsch (1.0); //борщ сестры
  70. mamka_ref.makeBorsch (1.0); //борщ мамки
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement