c++ - Why do I get an error trying to call a template member function with an explicit type parameter? -


i don't it, seems me call f unambiguous, fails compile expected primary-expression before ‘int’. if comment out line call f, compiles fine.

template<typename t> struct {     template<typename s>     void f() { } };  template<typename t> struct b : a<t> {     void g() {         this->f<int>();     } }; 

this due obscure provision of standard in if have template tries access template function in object type depends on template argument, have use template keyword in weird way:

this->template f<int>(); 

this similar weirdness typename comes dependent types, except applied functions. in particular, if leave out template keyword, there's parsing ambiguity between

this->f<int>() 

(what intended), and

((this->f) < int) > () 

which makes no sense (hence error). use of keyword template here disambiguates , forces compiler recognize it's looking @ valid call templated member function rather garbled mass of symbols.

hope helps!


Comments

Popular posts from this blog

python - Scipy curvefit RuntimeError:Optimal parameters not found: Number of calls to function has reached maxfev = 1000 -

c# - How to add a new treeview at the selected node? -

java - netbeans "Please wait - classpath scanning in progress..." -