```
operator < {
associativity
precedence
}
```

### Declarations

Returns a Boolean value indicating whether the first tuple is ordered before the second in a lexicographical ordering.

Given two tuples `(a1, a2, ..., aN)`

and `(b1, b2, ..., bN)`

, the first
tuple is before the second tuple if and only if
`a1 < b1`

or (`a1 == b1`

and
`(a2, ..., aN) < (b2, ..., bN)`

).

**Parameters:**
**lhs:** A tuple of `Comparable`

elements.
**rhs:** Another tuple of elements of the same type as `lhs`

.

#### Declaration

`func <<A, B, C, D, E, F>(lhs: (A, B, C, D, E, F), rhs: (A, B, C, D, E, F)) -> Bool where A : Comparable, B : Comparable, C : Comparable, D : Comparable, E : Comparable, F : Comparable`

Returns a Boolean value indicating whether the first tuple is ordered before the second in a lexicographical ordering.

Given two tuples `(a1, a2, ..., aN)`

and `(b1, b2, ..., bN)`

, the first
tuple is before the second tuple if and only if
`a1 < b1`

or (`a1 == b1`

and
`(a2, ..., aN) < (b2, ..., bN)`

).

**Parameters:**
**lhs:** A tuple of `Comparable`

elements.
**rhs:** Another tuple of elements of the same type as `lhs`

.

#### Declaration

`func <<A, B, C, D, E>(lhs: (A, B, C, D, E), rhs: (A, B, C, D, E)) -> Bool where A : Comparable, B : Comparable, C : Comparable, D : Comparable, E : Comparable`

Given two tuples `(a1, a2, ..., aN)`

and `(b1, b2, ..., bN)`

, the first
tuple is before the second tuple if and only if
`a1 < b1`

or (`a1 == b1`

and
`(a2, ..., aN) < (b2, ..., bN)`

).

**Parameters:**
**lhs:** A tuple of `Comparable`

elements.
**rhs:** Another tuple of elements of the same type as `lhs`

.

#### Declaration

`func <<A, B, C, D>(lhs: (A, B, C, D), rhs: (A, B, C, D)) -> Bool where A : Comparable, B : Comparable, C : Comparable, D : Comparable`

`(a1, a2, ..., aN)`

and `(b1, b2, ..., bN)`

, the first
tuple is before the second tuple if and only if
`a1 < b1`

or (`a1 == b1`

and
`(a2, ..., aN) < (b2, ..., bN)`

).

**Parameters:**
**lhs:** A tuple of `Comparable`

elements.
**rhs:** Another tuple of elements of the same type as `lhs`

.

#### Declaration

`func <<A, B, C>(lhs: (A, B, C), rhs: (A, B, C)) -> Bool where A : Comparable, B : Comparable, C : Comparable`

`(a1, a2, ..., aN)`

and `(b1, b2, ..., bN)`

, the first
tuple is before the second tuple if and only if
`a1 < b1`

or (`a1 == b1`

and
`(a2, ..., aN) < (b2, ..., bN)`

).

**Parameters:**
**lhs:** A tuple of `Comparable`

elements.
**rhs:** Another tuple of elements of the same type as `lhs`

.

#### Declaration

`func <<A, B>(lhs: (A, B), rhs: (A, B)) -> Bool where A : Comparable, B : Comparable`

Returns a Boolean value indicating whether the first argument represents a position before the second argument.

The types of the two underlying indices must be identical.

**Parameters:**
**lhs:** An index to compare.
**rhs:** Another index to compare.

#### Declaration

`func <(lhs: AnyIndex, rhs: AnyIndex) -> Bool`

Returns a Boolean value indicating whether the value of the first argument is less than that of the second argument.

This function is the only requirement of the `Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Character, rhs: Character) -> Bool`

Returns a Boolean value indicating whether the value of the first argument is less than that of the second argument.

This function is the only requirement of the `Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Character.UnicodeScalarView.Index, rhs: Character.UnicodeScalarView.Index) -> Bool`

Returns a Boolean value indicating whether the value of the first argument is less than that of the second argument.

This function is the only requirement of the `Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: ClosedRange<Bound>.Index, rhs: ClosedRange<Bound>.Index) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Dictionary<Key, Value>.Index, rhs: Dictionary<Key, Value>.Index) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: FlattenCollection<Base>.Index, rhs: FlattenCollection<Base>.Index) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Int, rhs: Int) -> Bool`

#### Declared In

`Int`

, `FixedWidthInteger`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Int8, rhs: Int8) -> Bool`

#### Declared In

`Int8`

, `FixedWidthInteger`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Int16, rhs: Int16) -> Bool`

#### Declared In

`Int16`

, `FixedWidthInteger`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Int32, rhs: Int32) -> Bool`

#### Declared In

`Int32`

, `FixedWidthInteger`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Int64, rhs: Int64) -> Bool`

#### Declared In

`Int64`

, `FixedWidthInteger`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: LazyDropWhileCollection<Base>.Index, rhs: LazyDropWhileCollection<Base>.Index) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: LazyPrefixWhileCollection<Base>.Index, rhs: LazyPrefixWhileCollection<Base>.Index) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: ObjectIdentifier, rhs: ObjectIdentifier) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: ReversedCollection<Base>.Index, rhs: ReversedCollection<Base>.Index) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Self, rhs: Self) -> Bool`

#### Declared In

`BinaryFloatingPoint`

, `FloatingPoint`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Set<Element>.Index, rhs: Set<Element>.Index) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: String, rhs: String) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: String.Index, rhs: String.Index) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: UInt, rhs: UInt) -> Bool`

#### Declared In

`UInt`

, `FixedWidthInteger`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: UInt8, rhs: UInt8) -> Bool`

#### Declared In

`UInt8`

, `FixedWidthInteger`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: UInt16, rhs: UInt16) -> Bool`

#### Declared In

`UInt16`

, `FixedWidthInteger`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: UInt32, rhs: UInt32) -> Bool`

#### Declared In

`UInt32`

, `FixedWidthInteger`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: UInt64, rhs: UInt64) -> Bool`

#### Declared In

`UInt64`

, `FixedWidthInteger`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <(lhs: Unicode.Scalar, rhs: Unicode.Scalar) -> Bool`

Returns a Boolean value indicating whether the first pointer references an earlier memory location than the second pointer.

**Parameters:**
**lhs:** A pointer.
**rhs:** Another pointer.
**Returns:** `true`

if `lhs`

references a memory address earlier than
`rhs`

; otherwise, `false`

.

#### Declaration

`func <(lhs: UnsafeMutablePointer<Pointee>, rhs: UnsafeMutablePointer<Pointee>) -> Bool`

Returns a Boolean value indicating whether the first pointer references an earlier memory location than the second pointer.

**Parameters:**
**lhs:** A pointer.
**rhs:** Another pointer.
**Returns:** `true`

if `lhs`

references a memory address earlier than
`rhs`

; otherwise, `false`

.

#### Declaration

`func <(lhs: UnsafeMutableRawPointer, rhs: UnsafeMutableRawPointer) -> Bool`

Returns a Boolean value indicating whether the first pointer references an earlier memory location than the second pointer.

**Parameters:**
**lhs:** A pointer.
**rhs:** Another pointer.
**Returns:** `true`

if `lhs`

references a memory address earlier than
`rhs`

; otherwise, `false`

.

#### Declaration

`func <(lhs: UnsafePointer<Pointee>, rhs: UnsafePointer<Pointee>) -> Bool`

**Parameters:**
**lhs:** A pointer.
**rhs:** Another pointer.
**Returns:** `true`

if `lhs`

references a memory address earlier than
`rhs`

; otherwise, `false`

.

#### Declaration

`func <(lhs: UnsafeRawPointer, rhs: UnsafeRawPointer) -> Bool`

`Comparable`

protocol. The
remainder of the relational operator functions are implemented by the
standard library for any type that conforms to `Comparable`

.

**Parameters:**
**lhs:** A value to compare.
**rhs:** Another value to compare.

#### Declaration

`func <<R>(lhs: Self, rhs: R) -> Bool where R : StringProtocol`

#### Declared In

`StringProtocol`

Returns a Boolean value indicating whether the first tuple is ordered before the second in a lexicographical ordering.

An arity zero tuple is never strictly before another arity zero tuple in a lexicographical ordering.

Parameters:lhs:An empty tuple.rhs:An empty tuple.## Declaration

`func <(lhs: (), rhs: ()) -> Bool`