Template speccialization question

A

Alfonso Morra

I have a function template declared as ff:

template <class T1, class T2> size_t find( const T1& col, const T2&
val, const ColFindEnum& dir ) ;


I wanted to specialize it for string,long as ff:

template<> //string, long specialization
size_t find( const std::string& col, long& val, const ColFindEnum& dir )


However, I get a compiler error:
error C2912: explicit specialization; 'size_t A::find(const std::string
&,long &,const Table::ColFindEnum &)' is not a specialization of a
function template

Is it not possible to have a function template that has both template
arguments and arguments with "known types"?
 
R

Rob Williscroft

Alfonso Morra wrote in infra.bt.com in comp.lang.c++:
I have a function template declared as ff:

template <class T1, class T2> size_t find( const T1& col, const T2&
val, const ColFindEnum& dir ) ;


I wanted to specialize it for string,long as ff:

template<> //string, long specialization
size_t find( const std::string& col, long& val, const ColFindEnum& dir
)

Try making it ..., long const &val, ...
.........................^^^^^

long & can't be used to deduce a valid T2 as its declared T2 const &.
However, I get a compiler error:
error C2912: explicit specialization; 'size_t A::find(const std::string
&,long &,const Table::ColFindEnum &)' is not a specialization of a
function template

Is it not possible to have a function template that has both template
arguments and arguments with "known types"?

Partial specializations are illegal, explicit specializations, like you
tried above, are legal.

HTH.

Rob.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,430
Messages
2,571,676
Members
48,796
Latest member
Greg L.

Latest Threads

Top