#include <stdplus/net/addr/subnet.hpp>

#include <format>
#include <stdexcept>

namespace stdplus
{

namespace detail
{

void invalidSubnetPfx(std::size_t pfx)
{
    throw std::invalid_argument(std::format("Invalid subnet prefix {}", pfx));
}

template class Subnet46<In4Addr, uint8_t>;
template class Subnet46<In6Addr, uint8_t>;

} // namespace detail

template Subnet4 FromStr<Subnet4>::operator()(std::string_view) const;
template Subnet6 FromStr<Subnet6>::operator()(std::string_view) const;
template SubnetAny FromStr<SubnetAny>::operator()(std::string_view) const;

template char* ToStr<Subnet4>::operator()(char*, Subnet4) const noexcept;
template char* ToStr<Subnet6>::operator()(char*, Subnet6) const noexcept;
template char* ToStr<SubnetAny>::operator()(char*, SubnetAny) const noexcept;

} // namespace stdplus
