Now subscr has 2 constructors, depending on how you want to handle the
user "handle" (arbitrary string). One constructor treats the user handle
as plain binary data, and copies that data without regarding its contents
(you must provide the size of the data to copy).
The other constructor treats the user handle as a C string (NULL
terminated string). You don't have to provide a size for the string, at
most N bytes are copied, being N the capacity of user handle field.