No method matching error when calling generic constructor with concrete implementer of abstract type

Not sure, but I think you need to specify the type parameter to BranchAndBound in solve()

Edit:

julia> methods(BranchAndBound)
# 0 methods for type constructor:

julia> methods(BranchAndBound{MySubProblemFactory})
# 1 method for type constructor:
[1] (::Type{BranchAndBound{F}})(factory::F, dataset::Dataset) where F<:SubProblemFactory in Main at REPL[9]:6
1 Like