IamRezaMousavi
Hi, thanks for this great semver library. I noticed that the template parameters of `version<I1, I2, I3>` are not type-constrained. Since Semantic Versioning defines `major`, `minor`, and `patch` as non-negative integers, it is currently possible to use non-integral types. Would you consider restricting these template parameters to integral types? This could be done using C++20 `concepts` or `std::enable_if` for older standards. I can open a PR if this sounds reasonable.