fork download
  1. #include <iostream>
  2.  
  3. struct A
  4. {
  5. void foo() { std::cout << "A::foo()\n" ; }
  6. void foo() const { std::cout << "A::foo() const\n" ; }
  7. };
  8.  
  9. template < typename T > struct B
  10. {
  11. private: typename std::remove_const<T>::type private_data ;
  12. public: T& public_data = private_data ;
  13. };
  14.  
  15. int main()
  16. {
  17. B<A> x ; x.public_data.foo() ; // A::foo()
  18.  
  19. B<const A> y ; y.public_data.foo() ; // A::foo() const
  20. }
  21.  
Success #stdin #stdout 0s 2896KB
stdin
Standard input is empty
stdout
A::foo()
A::foo() const