|
1646 | 1646 | \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those
|
1647 | 1647 | signatures is called using the default argument\iref{dcl.fct.default}.
|
1648 | 1648 |
|
1649 |
| -\indextext{requirements!\idxoldconcept{EqualityComparable}}% |
1650 |
| -\begin{concepttable}{\oldconcept{EqualityComparable} requirements}{cpp17.equalitycomparable} |
| 1649 | +\begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} |
1651 | 1650 | {x{1in}x{1in}p{3in}}
|
1652 | 1651 | \topline
|
1653 | 1652 | \hdstyle{Expression} & \hdstyle{Return type} & \rhdr{Requirement} \\ \capsep
|
|
1663 | 1662 | \item
|
1664 | 1663 | If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}.
|
1665 | 1664 | \end{itemize} \\
|
1666 |
| -\end{concepttable} |
| 1665 | +\end{oldconcepttable} |
1667 | 1666 |
|
1668 |
| -\indextext{requirements!\idxoldconcept{LessThanComparable}}% |
1669 |
| -\begin{concepttable}{\oldconcept{LessThanComparable} requirements}{cpp17.lessthancomparable} |
| 1667 | +\begin{oldconcepttable}{LessThanComparable}{}{cpp17.lessthancomparable} |
1670 | 1668 | {x{1in}x{1in}p{3in}}
|
1671 | 1669 | \topline
|
1672 | 1670 | \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Requirement} \\ \capsep
|
1673 | 1671 | \tcode{a < b} &
|
1674 | 1672 | convertible to \tcode{bool} &
|
1675 | 1673 | \tcode{<} is a strict weak ordering relation\iref{alg.sorting} \\
|
1676 |
| -\end{concepttable} |
| 1674 | +\end{oldconcepttable} |
1677 | 1675 |
|
1678 | 1676 | \enlargethispage{-3\baselineskip}
|
1679 |
| -\indextext{requirements!\idxoldconcept{DefaultConstructible}}% |
1680 |
| -\begin{concepttable}{\oldconcept{DefaultConstructible} requirements}{cpp17.defaultconstructible} |
| 1677 | +\begin{oldconcepttable}{DefaultConstructible}{}{cpp17.defaultconstructible} |
1681 | 1678 | {x{2.15in}p{3in}}
|
1682 | 1679 | \topline
|
1683 | 1680 | \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep
|
1684 | 1681 | \tcode{T t;} & object \tcode{t} is default-initialized \\ \rowsep
|
1685 | 1682 | \tcode{T u\{\};} & object \tcode{u} is value-initialized or aggregate-initialized \\ \rowsep
|
1686 | 1683 | \tcode{T()}\br\tcode{T\{\}} & an object of type \tcode{T} is value-initialized
|
1687 | 1684 | or aggregate-initialized \\
|
1688 |
| -\end{concepttable} |
| 1685 | +\end{oldconcepttable} |
1689 | 1686 |
|
1690 |
| -\indextext{requirements!\idxoldconcept{MoveConstructible}}% |
1691 |
| -\begin{concepttable}{\oldconcept{MoveConstructible} requirements}{cpp17.moveconstructible} |
| 1687 | +\begin{oldconcepttable}{MoveConstructible}{}{cpp17.moveconstructible} |
1692 | 1688 | {p{1in}p{4.15in}}
|
1693 | 1689 | \topline
|
1694 | 1690 | \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep
|
|
1703 | 1699 | work as specified whether \tcode{rv} has been moved from or not.
|
1704 | 1700 | \end{note}
|
1705 | 1701 | }\\
|
1706 |
| -\end{concepttable} |
| 1702 | +\end{oldconcepttable} |
1707 | 1703 |
|
1708 |
| -\indextext{requirements!\idxoldconcept{CopyConstructible}}% |
1709 |
| -\begin{concepttable}{\oldconcept{CopyConstructible} requirements (in addition to \oldconcept{MoveConstructible})}{cpp17.copyconstructible} |
| 1704 | +\begin{oldconcepttable}{CopyConstructible}{ (in addition to \oldconcept{MoveConstructible})}{cpp17.copyconstructible} |
1710 | 1705 | {p{1in}p{4.15in}}
|
1711 | 1706 | \topline
|
1712 | 1707 | \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep
|
1713 | 1708 | \tcode{T u = v;} & the value of \tcode{v} is unchanged and is equivalent to \tcode{ u}\\ \rowsep
|
1714 | 1709 | \tcode{T(v)} &
|
1715 | 1710 | the value of \tcode{v} is unchanged and is equivalent to \tcode{T(v)} \\
|
1716 |
| -\end{concepttable} |
| 1711 | +\end{oldconcepttable} |
1717 | 1712 |
|
1718 |
| -\indextext{requirements!\idxoldconcept{MoveAssignable}}% |
1719 |
| -\begin{concepttable}{\oldconcept{MoveAssignable} requirements}{cpp17.moveassignable} |
| 1713 | +\begin{oldconcepttable}{MoveAssignable}{}{cpp17.moveassignable} |
1720 | 1714 | {p{1in}p{1in}p{1in}p{1.9in}}
|
1721 | 1715 | \topline
|
1722 | 1716 | \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep
|
|
1732 | 1726 | work as specified whether \tcode{rv} has been moved from or not.
|
1733 | 1727 | \end{note}
|
1734 | 1728 | }\\
|
1735 |
| -\end{concepttable} |
| 1729 | +\end{oldconcepttable} |
1736 | 1730 |
|
1737 |
| -\indextext{requirements!\idxoldconcept{CopyAssignable}}% |
1738 |
| -\begin{concepttable}{\oldconcept{CopyAssignable} requirements (in addition to \oldconcept{MoveAssignable})}{cpp17.copyassignable} |
| 1731 | +\begin{oldconcepttable}{CopyAssignable}{ (in addition to \oldconcept{MoveAssignable})}{cpp17.copyassignable} |
1739 | 1732 | {p{1in}p{1in}p{1in}p{1.9in}}
|
1740 | 1733 | \topline
|
1741 | 1734 | \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep
|
1742 | 1735 | \tcode{t = v} & \tcode{T\&} & \tcode{t} & \tcode{t} is equivalent to \tcode{v}, the value of \tcode{v} is unchanged\\
|
1743 |
| -\end{concepttable} |
| 1736 | +\end{oldconcepttable} |
1744 | 1737 |
|
1745 |
| -\indextext{requirements!\idxoldconcept{Destructible}} |
1746 |
| -\begin{concepttable}{\oldconcept{Destructible} requirements}{cpp17.destructible} |
| 1738 | +\begin{oldconcepttable}{Destructible}{}{cpp17.destructible} |
1747 | 1739 | {p{1in}p{4.15in}}
|
1748 | 1740 | \topline
|
1749 | 1741 | \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep
|
|
1753 | 1745 | Array types and non-object types are not \oldconcept{Destructible}.
|
1754 | 1746 | \end{note}
|
1755 | 1747 | } \\
|
1756 |
| -\end{concepttable} |
| 1748 | +\end{oldconcepttable} |
1757 | 1749 |
|
1758 | 1750 | \rSec3[swappable.requirements]{Swappable requirements}
|
1759 | 1751 |
|
|
1899 | 1891 | denote values of type (possibly \tcode{const}) \tcode{P}, and \tcode{np} denotes
|
1900 | 1892 | a value of type (possibly \tcode{const}) \tcode{std::nullptr_t}.
|
1901 | 1893 |
|
1902 |
| -\indextext{requirements!\idxoldconcept{NullablePointer}}% |
1903 |
| -\begin{concepttable}{\oldconcept{NullablePointer} requirements}{cpp17.nullablepointer} |
| 1894 | +\begin{oldconcepttable}{NullablePointer}{}{cpp17.nullablepointer} |
1904 | 1895 | {lll}
|
1905 | 1896 | \topline
|
1906 | 1897 | Expression & Return type & Operational semantics \\ \capsep
|
|
1935 | 1926 | \tcode{np != a} &
|
1936 | 1927 | &
|
1937 | 1928 | \\ \rowsep
|
1938 |
| -\end{concepttable} |
| 1929 | +\end{oldconcepttable} |
1939 | 1930 |
|
1940 | 1931 | \rSec3[hash.requirements]{\oldconcept{Hash} requirements}
|
1941 | 1932 |
|
1942 |
| -\indextext{requirements!\idxoldconcept{Hash}} |
1943 | 1933 | \pnum
|
1944 |
| -A type \tcode{H} meets the \oldconcept{Hash} requirements if: |
| 1934 | +A type \tcode{H} meets the \defnoldconcept{Hash} requirements if: |
1945 | 1935 | \begin{itemize}
|
1946 | 1936 | \item it is a function object type\iref{function.objects},
|
1947 | 1937 | \item it meets the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and
|
|
1956 | 1946 | \tcode{u} is an lvalue of type \tcode{Key}, and \tcode{k} is a value of a type convertible to
|
1957 | 1947 | (possibly \tcode{const}) \tcode{Key}.
|
1958 | 1948 |
|
1959 |
| -\begin{concepttable}{\oldconcept{Hash} requirements}{cpp17.hash} |
| 1949 | +\begin{oldconcepttable}{Hash}{}{cpp17.hash} |
1960 | 1950 | {llp{.55\hsize}}
|
1961 | 1951 | \topline
|
1962 | 1952 | Expression & Return type & Requirement \\ \capsep
|
|
1977 | 1967 | \tcode{h(u)} &
|
1978 | 1968 | \tcode{size_t} &
|
1979 | 1969 | Shall not modify \tcode{u}. \\
|
1980 |
| -\end{concepttable} |
| 1970 | +\end{oldconcepttable} |
1981 | 1971 |
|
1982 | 1972 | \rSec3[allocator.requirements]{\oldconcept{Allocator} requirements}
|
1983 | 1973 |
|
1984 |
| -\indextext{requirements!\idxoldconcept{Allocator}}% |
| 1974 | +\indextext{\idxoldconcept{Allocator}}% |
1985 | 1975 | \pnum
|
1986 | 1976 | The library describes a standard set of requirements for \term{allocators},
|
1987 | 1977 | which are class-type objects that encapsulate the information about an allocation model.
|
|
0 commit comments