:relfileprefix: ../../
[#boost-urls-ipv6_address]

== xref:boost.adoc[pass:[boost]]::xref:boost/urls.adoc[pass:[urls]]::ipv6_address


An IP version 6 style address.


=== Synopsis

Declared in header `<https://www.github.com/boostorg/url/blob/develop/include/boost/url/ipv6_address.hpp#L64[boost/url/ipv6_address.hpp,window=blank_]>`

[source,cpp,subs="verbatim,macros,-callouts"]
----
class ipv6_address;
----

===  Types
[cols=2,separator=¦]
|===
¦Name ¦Description
¦xref:boost/urls/ipv6_address/bytes_type.adoc[`bytes_type`]  ¦

The type used to represent an address as an array of bytes.

|===
===  Member Functions
[cols=2,separator=¦]
|===
¦Name ¦Description
¦xref:boost/urls/ipv6_address/2constructor.adoc[`ipv6_address`] [.small]#[constructor]# ¦

Construct from a string.


Construct from an IPv4 address.


Construct from an array of bytes.


Constructor.

¦xref:boost/urls/ipv6_address/is_loopback.adoc[`is_loopback`]  ¦

Return true if the address is a loopback address

¦xref:boost/urls/ipv6_address/is_unspecified.adoc[`is_unspecified`]  ¦

Return true if the address is unspecified

¦xref:boost/urls/ipv6_address/is_v4_mapped.adoc[`is_v4_mapped`]  ¦

Return true if the address is a mapped IPv4 address

¦xref:boost/urls/ipv6_address/operator_assign.adoc[`operator=`]  ¦

Copy Assignment

¦xref:boost/urls/ipv6_address/to_buffer.adoc[`to_buffer`]  ¦

Write a dotted decimal string representing the address to a buffer

¦xref:boost/urls/ipv6_address/to_bytes.adoc[`to_bytes`]  ¦

Return the address as bytes, in network byte order

¦xref:boost/urls/ipv6_address/to_string.adoc[`to_string`]  ¦

Return the address as a string.

|===
===  Static Member Functions
[cols=2,separator=¦]
|===
¦Name ¦Description
¦xref:boost/urls/ipv6_address/loopback.adoc[`loopback`]  ¦

Return an address object that represents the loopback address

|===
===  Static Data Members
[cols=2,separator=¦]
|===
¦Name ¦Description
¦xref:boost/urls/ipv6_address/max_str_len.adoc[`max_str_len`]  ¦

The number of characters in the longest possible IPv6 string.

|===
===  Friends
[cols=2,separator=¦]
|===
¦Name ¦Description
¦xref:boost/urls/ipv6_address/08friend-01.adoc[`operator!=`]  ¦

Return true if two addresses are not equal

¦xref:boost/urls/ipv6_address/08friend-09.adoc[`operator<<`]  ¦

Format the address to an output stream

¦xref:boost/urls/ipv6_address/08friend-0d.adoc[`operator==`]  ¦

Return true if two addresses are equal

|===

=== Description


Objects of this type are used to construct,
parse, and manipulate IP version 6 addresses.
[,cpp]
----
IPv6address =                            6( h16 ":" ) ls32
            /                       "::" 5( h16 ":" ) ls32
            / [               h16 ] "::" 4( h16 ":" ) ls32
            / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
            / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
            / [ *3( h16 ":" ) h16 ] "::"    h16 ":"   ls32
            / [ *4( h16 ":" ) h16 ] "::"              ls32
            / [ *5( h16 ":" ) h16 ] "::"              h16
            / [ *6( h16 ":" ) h16 ] "::"

ls32        = ( h16 ":" h16 ) / IPv4address
            ; least-significant 32 bits of address

h16         = 1*4HEXDIG
            ; 16 bits of address represented in hexadecimal
----

* link:https://datatracker.ietf.org/doc/html/rfc4291[IP Version 6 Addressing Architecture (rfc4291)]

* link:https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.2[3.2.2. Host (rfc3986)]



=== See Also


xref:boost/urls/ipv4_address.adoc[ipv4_address]
,
xref:boost/urls/parse_ipv6_address.adoc[parse_ipv6_address]
.



