A &quot;factory function&quot; is just a function. Unless you have some way of statically distinguishing &quot;factory functions&quot; from functions, you are now arguing &quot;you can write safe C++ if you make all your data immutable and you don&#x27;t use functions&quot;. Besides the fact that this is not true (consider the destruction order for rvalues), how is this a statement that is possibly relevant to the real world?