|
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