considering setting default value is common that min/max value, move default value template argument ahead of min/max template argument, because C++ can not skip template argument like Rust `_` does.
considering setting default value is common that min/max value, move default value template argument ahead of min/max template argument, because C++ can not skip template argument like Rust `_` does.