Template specialization within template definition: is this supported for all compilers or standard usage?

StackOverflow https://stackoverflow.com/questions/2864804

Question

This compiled on VS 2008, but it seems like non-standard usage of templates.

template <class T>
class Foo
{
public:
  void bar(Foo<int> arg)
  {
    // do some stuff here
  }

  // more code ...
};

Is there an issue since the template specialization Foo<int> is contained within the definition of its own template class?

Was it helpful?

Solution

It's not really specialisation - you are just saying that function takes a parameter of type Foo <int> - the fact that the function is itself a member of the Foo class isn't really important. And yes, it's legal.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top