Line 16 has default value - if no argument is supplied it will use this value. It type is const std::string reference. There is also an initialiser list (introduced with the colon) which sets the member id with he value of x
Line 17 I Don't really know mauch about the details of this, but it looks like it is an overload of the operator () with an empty argument list (the second pair of parentheses).