:relfileprefix: ../../
[#boost-urls-operator_le-0a]

= xref:boost.adoc[pass:[boost]]::xref:boost/urls.adoc[pass:[urls]]::operator<=


Return the result of comparing two URLs


== Synopsis

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

[source,cpp,subs="verbatim,macros,-callouts"]
----
bool
operator<=(
    xref:boost/urls/url_view_base.adoc[url_view_base] const& u0,
    xref:boost/urls/url_view_base.adoc[url_view_base] const& u1) noexcept;
----

== Description


The URLs are compared component by
component as if they were first
normalized.

=== Example
[,cpp]
----
url_view u0( "http://www.b.com/index.htm" );
url_view u1( "http://www.b.com/index.htm" );
assert( u0 <= u1 );
----

=== Effects
[,cpp]
----
url a(u0);
a.normalize();
url b(u1);
b.normalize();
return std::make_tuple(
           a.scheme(),
           a.user(),
           a.password(),
           a.host(),
           a.port(),
           a.path(),
           a.query(),
           a.fragment()) <=
       std::make_tuple(
           b.scheme(),
           b.user(),
           b.password(),
           b.host(),
           b.port(),
           b.path(),
           b.query(),
           b.fragment());
----

=== Complexity

Linear in `min( u0.size(), u1.size() )`

=== Exception Safety

Throws nothing

=== Specification

* link:https://datatracker.ietf.org/doc/html/rfc3986#section-6.2.2[6.2.2 Syntax-Based Normalization (rfc3986)]




== Return Value


`true` if `u0 &lt;&equals; u1`






