The class template basic_address_range represents a range of IP addresses in network byte order. This clause defines two specializations of the class template basic_address_range: basic_address_range<address_v4> and basic_address_range<address_v6>. The members and operational semantics of these specializations are defined below.
namespace std {
namespace experimental {
namespace net {
inline namespace v1 {
namespace ip {
template<> class basic_address_range<Address>
{
public:
// types:
using iterator = basic_address_iterator<Address>;
// constructors:
basic_address_range() noexcept;
basic_address_range(const Address& first,
const Address& last) noexcept;
// members:
iterator begin() const noexcept;
iterator end() const noexcept;
bool empty() const noexcept;
size_t size() const noexcept; // not always defined
iterator find(const Address& addr) const noexcept;
};
} // namespace ip
} // inline namespace v1
} // namespace net
} // namespace experimental
} // namespace std
Specializations of basic_address_range satisfy the requirements for Destructible (C++ 2014 [destructible]), CopyConstructible (C++ 2014 [copyconstructible]), and CopyAssignable (C++ 2014 [copyassignable]).
basic_address_range() noexcept;
Effects: Constructs an object of type basic_address_range<Address> that represents an empty range.
basic_address_range(const Address& first,
const Address& last) noexcept;
Effects: Constructs an object of type basic_address_range<Address> that represents the half-open range [first, last).
iterator begin() const noexcept;
Returns: An iterator that points to the beginning of the range.
iterator end() const noexcept;
Returns: An iterator that points to the end of the range.
bool empty() const noexcept;
Returns: true if *this represents an empty range, otherwise false.
size_t size() const noexcept;
Returns: The number of unique addresses in the range.
Remarks: This member function is not defined when Address is type address_v6.
iterator find(const Address& addr) const noexcept;
Returns: If addr is in the range, an iterator that points to addr; otherwise, end().
Complexity: Constant time.