fork download
  1. #include <iostream>
  2.  
  3. template <typename T> struct extra {};
  4.  
  5. template <> struct extra<int> {
  6. public:
  7. int get() const;
  8. };
  9.  
  10. template <typename T>
  11. class base : public extra<T> {
  12. friend class extra<T>;
  13. public:
  14. void set(T data) { data_=data; }
  15. private:
  16. T data_;
  17. };
  18.  
  19. int extra<int>::get() const{ return static_cast<const base<int>*>(this)->data_;}
  20.  
  21. int main()
  22. {
  23. base<int> b;
  24.  
  25. b.set(42);
  26. std::cout << b.get() << std::endl;
  27. }
  28.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
42