jeudi 16 avril 2020

Is there a way to specialize a function template by an array type?

Let's say, we need a function template which should return an integer depending on a type:

template<typename T>
int get_type();

Further, we do specialize it with couple of types:

template<>
int get_type<int>()
{
  return TYPE_INT;
}

// And so on for other types...

And this works well, but not for array types. I can do the following:

template<>
int get_type<char[]>()
{
  return TYPE_STRING;
}

and compiler "agrees" with this, but linker does not. Because the type char[] differs against, for example, the char[5].

Is there any way to implement this function template without function parameters? I.e., I know that we can do something like this:

template<typename T>
int get_type(const T&);

But, actually the function parameter is not needed (used) here.

EDIT:

I use the C++ 11.

Aucun commentaire:

Enregistrer un commentaire