So what's the preferred solution? If I use a template function, is it better to have the version blocks outside the function body to avoid the function being a template on all platforms?