You can make register_device() an inline function that just calls a do_register_device() private function without the badge. That way you don't have to pay for the empty class.
If your model is simple enough to represent the original system accurately, then the original system is not complex.
My model can be complex enough to represent the original system and still be useful. I can iterate on design and make measurements without building the real thing.
Having a complex model that describes a complex system is not unusable though. There is a reason we want to accurately simulate the Navier-Stokes equations with complex boundary conditions.
https://godbolt.org/z/j-THTX