crossover function
constructible with no argument
fix template parameter name

    Val   => OutputType
    Value => OutputType