Add explicit to one-argument constructors
Remove user_defined_settings.cmake from repository

--assume-unchanged will, when you checkout a branch, overwrite the settings. --skip-worktree will not allow you to check something out. The solution is to not have the file in version control and every person that checks the repository out has to create the file themselves, even if no custom config is needed.
Add a bunch of 'final' modifiers