fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template<class T>
  5. struct Foo{
  6. Foo(T* t):_t(t){}
  7. T * _t;
  8. };
  9.  
  10. struct Bar{};
  11. struct Bar2 : public Bar {};
  12. struct NotBar{};
  13.  
  14. void do_something(const Foo<Bar> &){
  15. cout<<"In Foo do something"<<endl;
  16. }
  17.  
  18. void do_something(std::string f){
  19. cout<<"In string do something"<<endl;
  20.  
  21. }
  22.  
  23. int main() {
  24. const char * string = "string";
  25. do_something(string);
  26. Bar2 bar2;
  27. Foo<Bar> fb(&bar2);
  28. NotBar nb;
  29. do_something(&bar2);
  30. //Foo<Bar> fb2(&nb);// this SHOULD fail
  31. return 0;
  32. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
In string do something
In Foo do something