It returns an empty bspline_2d type. Note that INITIALIZE still needs to be called before it can be used. Not really that useful except perhaps in some OpenMP applications.
elemental function bspline_2d_constructor_empty() result(me) implicit none type(bspline_2d) :: me end function bspline_2d_constructor_empty