fork(1) download
  1.  
  2. // regardless of the fact that members are exposed...
  3. template<typename T>
  4. struct TBase {
  5. typedef T MemberType;
  6. MemberType baseMember;
  7. MemberType baseFunction() { return MemberType(); }
  8. };
  9.  
  10.  
  11. template<typename T>
  12. struct TDerived : public TBase<T> {
  13. // http://w...content-available-to-author-only...t.com/c++-faq-lite/nondependent-name-lookup-members.html
  14. // tells us to use a `using` declaration.
  15. using typename TBase<T>::MemberType;
  16. using TBase<T>::baseFunction;
  17. using TBase<T>::baseMember;
  18.  
  19. void useBaseFunction() {
  20. // what I want to be able to write:
  21. baseFunction();
  22. ++baseMember;
  23. MemberType t; // error: expected primary-expression
  24. }
  25. };
  26.  
  27.  
  28. int main(){
  29. TDerived<int> d;
  30. d.useBaseFunction();
  31. }
Compilation error #stdin compilation error #stdout 0.02s 2720KB
stdin
Standard input is empty
compilation info
prog.cpp: In member function ‘void TDerived<T>::useBaseFunction()’:
prog.cpp:23: error: expected `;' before ‘t’
prog.cpp: In member function ‘void TDerived<T>::useBaseFunction() [with T = int]’:
prog.cpp:30:   instantiated from here
prog.cpp:23: error: expected primary-expression
stdout
Standard output is empty