Looks like this is a hack in MS's implementation of std::function
to allow for the following:
function<string (string)> myfunc = NULL;
This is the piece of code I could find in MS's implementation of the <functional>
header:
#if defined(_NATIVE_NULLPTR_SUPPORTED) \
&& !defined(_DO_NOT_USE_NULLPTR_IN_STL)
function(int)
{ // construct empty function wrapper from null pointer
this->_Reset();
}
#endif /* defined(_NATIVE_NULLPTR_SUPPORTED) etc. */
So it looks like this constructor is enabled conditionally based on the level of standard conformance the user wants.
However, there is no such a constructor in the C++11 Standard Library specification (see paragraph 20.8.11.2.1).