• Harris Hancock's avatar
    Fix build error in MSVC · c4629e37
    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
common.h 26.3 KB