-
Harris Hancock authored
Closes #479. If T is a template instantiation and `List<T, kind<T>()>` is the return or parameter type of a function (notably get, set, init, adopt, and disown functions) defined out-of-line from its definition, MSVC fails to match the definition with its declaration. This seems to be another consequence of poor expression SFINAE / constexpr support. An easy workaround is to avoid using kind<T>() and instead manually instantiate Kind_<T>, as in lite mode. When I converted Kind_<T> to use VoidSfinae, I had thought this solved the problem, but clearly there are still edge cases.
c4629e37