Why does this necessarily lead to wrong results? This was meant to be an optional thing. If your model doesn't need a switch you just don't use it. Maybe the concept is flawed. But I would rather fix that flaw then.
Maybe a warning is a solution. If you use a normal newton with switchable privars, we can emit a warning that tells the user what to do if this was unintentional.
Maybe we can get rid of the template argument by using virtual inheritance for the privar switch. Shouldn't make a big runtime difference. We could state the default PriVarSwitch in the model traits, and allow with a setPriVarSwitch member function to exchange it for a custom implementation.