templates erase in containers template functions concept lifting implicit interfaces overload resolution