Advertisement
Anna_Khashper

Untitled

Oct 14th, 2020
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.45 KB | None | 0 0
  1. template <class T, size_t S = T.size>
  2. size_t get_size(T t)
  3. {
  4.     return t.size;
  5. };
  6.  
  7. template <class T, size_t(T::*)() const = &T::size>
  8. size_t get_size(T t)
  9. {
  10.     return t.size();
  11. };
  12.  
  13.  
  14. int main()
  15. {
  16.     std::string s{ "Hello" };
  17.     size_t s_size = get_size(s);   // 5, вызывается метод size()
  18.  
  19.     struct Struct
  20.     {
  21.         size_t size = 0;
  22.     };
  23.  
  24.     Struct x{ 10 };
  25.     size_t x_size = get_size(x);  // 10, читается поле size
  26.     return 0;
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement