Personally if I have primitive variables that I need to initialise in a specific order, I'm not going to rely on the class definition order to do it, and that means good old fashioned assignment with the = operator.
And if I need bananas, I'm going to eat good old fashioned apples!
assignment != initialization
By the time your assignment is actually reached, your variables will have already been default-initialized (though it'd probably be optimized out* if the variable isn't accessed before your assignment).
*[size=2]Which is less a guarantee than the standard-guaranteed initialization order.
Why wouldn't you rely on the standardized initialization order? The only reason I can think of, is third-party APIs that have weird initialization requirements, requiring you to be 100% sure the API is initialized before you can, for example, load resources. This forces you to break out some initialization outside of the constructor entirely, into separate Init() functions, mucking up RAII for any globally-constructed variables.
But even in that situation, your assignments would still need to happen completely out of the constructor, and it wouldn't be a matter between constructor-body or initializer list, but between the entire construction process or a separate member-function called later.