Yes, this seems a reasonable option to use the template argument to force the type conversion. Though it doesn’t look like there currently is a templated version that returns the value.
Agreed this is reasonable, but again this particular usage doesn’t seem to exist currently in rclcpp (it requires a default value).
Taking a step back though, I trust you can sympathize if I express some frustration that in the end you’re suggesting my code doesn’t need to change except I should rewrite get_parameter as declare_parameter. If for “most cases” that’s all that’s needed, what problem is being solved here? It’s still get_parameter, just now with a name with a less obvious meaning.