This means that if you call it without parameters, the parameters will take the values ββthat you passed.
So if you call
IntSet* i = new Intset();
will be equivalent to calling
Intset* i = new IntSet(-1,-1,-1,-1)
About the nameless part. I would suggest, because it is part of a library that uses templates. Unconditional parameters are not used, but exist, so they correspond to the signature of another class that they may need. In case they need it, it will by default simply skip -1. You can take a look at this link for an example:
http://compgroups.net/comp.lang.c++/unnamed-formal-parameter/1004784
I am copying an example from the link above to make the case of using such a construct a useful way
for instance
class A { public: A(void* = 0) {}
C :: create will not compile if A :: A does not have a parameter, even if it is not used.
source share