Any reason for moving the template implementation inline? Does msvc still struggle with that? I remember a few years ago it absolutely couldn't do it.