I have the following code
template <typename Signature>
class Holder;
template <typename I, typename O>
struct Holder<O(I)> {
// code here
}
};
...
int main()
{
...
Holder<int(double)> a;
...
}
I know that the declaration of one argument template parameter is necessary (since I'm calling the template class with one function-object parameter); but what I do not understand if in this case I'm really providing a template specification. I thought that a specification of a template requires to have defined (not just declared) it, while in this case I simply declared the one-parameter template and then I defined in as a template with two parameter. What is going on technically?