Consider template for basic_address_range
But this is a weaker requirement than for basic_address_iterator given the size() member behaviour for IPv6. Some people would like a size() that returns numeric_limits<size_t>::max().
size() could be deleted in the v6 specialisation
Applied in 270ba9613d82b44098af6cbd42d998dc7b5222f4.
The size() member is conditionally present.
Pre-Lenexa Summary
This change simplifies use of the range types in IP-version-independent generic code. The basic_address_range primary template is not defined. Only specialisations for address_v4 and address_v6 are provided.
There is an open question as to whether the size() member should be conditionally defined (and not provided for the address_v6 specialisation), or always defined (and given a maximum value). The issue is that to support all address_v6 ranges a 128-bit integer is required. However, it may be that common use cases involve small networks, in which case a valid size calculation may be useful.
The change was included in revision 5, with a conditionally present size() member. An implementation can be found on the master branch of Asio's GitHub repository.