Very few languages have built-in support for general selection, although many provide facilities for finding the smallest or largest element of a list. A notable exception is C++, which provides a templated codice_1 method with a guarantee of expected linear time, and also partitions the data, requiring that the "n"th element be sorted into its correct place, elements before the "n"th element are less than it, and elements after the "n"th element are greater than it. It is implied but not required that it is based on Hoare's algorithm (or some variant) by its requirement of expected linear time and partitioning of data.