Lift uses of `make_shared` that cause MSVC to crash into their own functions (#4966)
Issue Details:
When `make_shared` is used via a using declaration as a default parameter value, it causes MSVC to crash (see https://developercommunity.visualstudio.com/content/problem/1170468/ice-when-using-make-shared-via-a-using-declaration.html).
Fix Details:
Move the use of `make_shared` from the default parameter value into a function, then call that function as the default parameter value.