|
765 | 765 | \pnum
|
766 | 766 | \constraints
|
767 | 767 | \begin{itemize}
|
768 |
| -\item \tcode{is_default_constructible_v<first_type>} is \tcode{true} and |
769 |
| -\item \tcode{is_default_constructible_v<second_type>} is \tcode{true}. |
| 768 | +\item \tcode{is_default_constructible_v<T1>} is \tcode{true} and |
| 769 | +\item \tcode{is_default_constructible_v<T2>} is \tcode{true}. |
770 | 770 | \end{itemize}
|
771 | 771 |
|
772 | 772 | \pnum
|
|
776 | 776 | \pnum
|
777 | 777 | \remarks
|
778 | 778 | The expression inside \keyword{explicit} evaluates to \tcode{true}
|
779 |
| -if and only if either \tcode{first_type} or |
780 |
| -\tcode{second_type} is not implicitly default-constructible. |
| 779 | +if and only if either \tcode{T1} or |
| 780 | +\tcode{T2} is not implicitly default-constructible. |
781 | 781 | \begin{note}
|
782 | 782 | This behavior can be implemented with a trait that checks
|
783 |
| -whether a \tcode{const first_type\&} or a \tcode{const second_type\&} |
| 783 | +whether a \tcode{const T1\&} or a \tcode{const T2\&} |
784 | 784 | can be initialized with \tcode{\{\}}.
|
785 | 785 | \end{note}
|
786 | 786 | \end{itemdescr}
|
|
794 | 794 | \pnum
|
795 | 795 | \constraints
|
796 | 796 | \begin{itemize}
|
797 |
| -\item \tcode{is_copy_constructible_v<first_type>} is \tcode{true} and |
798 |
| -\item \tcode{is_copy_constructible_v<second_type>} is \tcode{true}. |
| 797 | +\item \tcode{is_copy_constructible_v<T1>} is \tcode{true} and |
| 798 | +\item \tcode{is_copy_constructible_v<T2>} is \tcode{true}. |
799 | 799 | \end{itemize}
|
800 | 800 |
|
801 | 801 | \pnum
|
|
806 | 806 | \remarks
|
807 | 807 | The expression inside \keyword{explicit} is equivalent to:
|
808 | 808 | \begin{codeblock}
|
809 |
| -!is_convertible_v<const first_type&, first_type> || |
810 |
| - !is_convertible_v<const second_type&, second_type> |
| 809 | +!is_convertible_v<const T1&, T1> || !is_convertible_v<const T2&, T2> |
811 | 810 | \end{codeblock}
|
812 | 811 | \end{itemdescr}
|
813 | 812 |
|
|
820 | 819 | \pnum
|
821 | 820 | \constraints
|
822 | 821 | \begin{itemize}
|
823 |
| -\item \tcode{is_constructible_v<first_type, U1>} is \tcode{true} and |
824 |
| -\item \tcode{is_constructible_v<second_type, U2>} is \tcode{true}. |
| 822 | +\item \tcode{is_constructible_v<T1, U1>} is \tcode{true} and |
| 823 | +\item \tcode{is_constructible_v<T2, U2>} is \tcode{true}. |
825 | 824 | \end{itemize}
|
826 | 825 |
|
827 | 826 | \pnum
|
|
834 | 833 | \remarks
|
835 | 834 | The expression inside \keyword{explicit} is equivalent to:
|
836 | 835 | \begin{codeblock}
|
837 |
| -!is_convertible_v<U1, first_type> || !is_convertible_v<U2, second_type> |
| 836 | +!is_convertible_v<U1, T1> || !is_convertible_v<U2, T2> |
838 | 837 | \end{codeblock}
|
839 | 838 | \end{itemdescr}
|
840 | 839 |
|
|
854 | 853 | \constraints
|
855 | 854 | \begin{itemize}
|
856 | 855 | \item
|
857 |
| -\tcode{is_constructible_v<first_type, decltype(get<0>(\exposid{FWD}(p)))>} |
| 856 | +\tcode{is_constructible_v<T1, decltype(get<0>(\exposid{FWD}(p)))>} |
858 | 857 | is \tcode{true} and
|
859 | 858 | \item
|
860 |
| -\tcode{is_constructible_v<second_type, decltype(get<1>(\exposid{FWD}(p)))>} |
| 859 | +\tcode{is_constructible_v<T2, decltype(get<1>(\exposid{FWD}(p)))>} |
861 | 860 | is \tcode{true}.
|
862 | 861 | \end{itemize}
|
863 | 862 |
|
|
870 | 869 | \remarks
|
871 | 870 | The expression inside \keyword{explicit} is equivalent to:
|
872 | 871 | \begin{codeblock}
|
873 |
| -!is_convertible_v<decltype(get<0>(@\exposid{FWD}@(p))), first_type> || |
874 |
| -!is_convertible_v<decltype(get<1>(@\exposid{FWD}@(p))), second_type> |
| 872 | +!is_convertible_v<decltype(get<0>(@\exposid{FWD}@(p))), T1> || |
| 873 | +!is_convertible_v<decltype(get<1>(@\exposid{FWD}@(p))), T2> |
875 | 874 | \end{codeblock}
|
876 | 875 | \end{itemdescr}
|
877 | 876 |
|
|
886 | 885 | \pnum
|
887 | 886 | \mandates
|
888 | 887 | \begin{itemize}
|
889 |
| -\item \tcode{is_constructible_v<first_type, Args1...>} is \tcode{true} and |
890 |
| -\item \tcode{is_constructible_v<second_type, Args2...>} is \tcode{true}. |
| 888 | +\item \tcode{is_constructible_v<T1, Args1...>} is \tcode{true} and |
| 889 | +\item \tcode{is_constructible_v<T2, Args2...>} is \tcode{true}. |
891 | 890 | \end{itemize}
|
892 | 891 |
|
893 | 892 | \pnum
|
|
919 | 918 | \pnum
|
920 | 919 | \remarks
|
921 | 920 | This operator is defined as deleted unless
|
922 |
| -\tcode{is_copy_assignable_v<first_type>} is \tcode{true} and |
923 |
| -\tcode{is_copy_assignable_v<second_type>} is \tcode{true}. |
| 921 | +\tcode{is_copy_assignable_v<T1>} is \tcode{true} and |
| 922 | +\tcode{is_copy_assignable_v<T2>} is \tcode{true}. |
924 | 923 | \end{itemdescr}
|
925 | 924 |
|
926 | 925 | \indexlibrarymember{operator=}{pair}%
|
|
933 | 932 | \constraints
|
934 | 933 | \begin{itemize}
|
935 | 934 | \item
|
936 |
| -\tcode{is_copy_assignable<const first_type>} is \tcode{true} and |
| 935 | +\tcode{is_copy_assignable<const T1>} is \tcode{true} and |
937 | 936 | \item
|
938 |
| -\tcode{is_copy_assignable<const second_type>} is \tcode{true}. |
| 937 | +\tcode{is_copy_assignable<const T2>} is \tcode{true}. |
939 | 938 | \end{itemize}
|
940 | 939 |
|
941 | 940 | \pnum
|
|
956 | 955 | \pnum
|
957 | 956 | \constraints
|
958 | 957 | \begin{itemize}
|
959 |
| -\item \tcode{is_assignable_v<first_type\&, const U1\&>} is \tcode{true} and |
960 |
| -\item \tcode{is_assignable_v<second_type\&, const U2\&>} is \tcode{true}. |
| 958 | +\item \tcode{is_assignable_v<T1\&, const U1\&>} is \tcode{true} and |
| 959 | +\item \tcode{is_assignable_v<T2\&, const U2\&>} is \tcode{true}. |
961 | 960 | \end{itemize}
|
962 | 961 |
|
963 | 962 | \pnum
|
|
979 | 978 | \constraints
|
980 | 979 | \begin{itemize}
|
981 | 980 | \item
|
982 |
| -\tcode{is_assignable_v<const first_type\&, const U1\&>} is \tcode{true}, and |
| 981 | +\tcode{is_assignable_v<const T1\&, const U1\&>} is \tcode{true}, and |
983 | 982 | \item
|
984 |
| -\tcode{is_assignable_v<const second_type\&, const U2\&>} is \tcode{true}. |
| 983 | +\tcode{is_assignable_v<const T2\&, const U2\&>} is \tcode{true}. |
985 | 984 | \end{itemize}
|
986 | 985 |
|
987 | 986 | \pnum
|
|
1002 | 1001 | \pnum
|
1003 | 1002 | \constraints
|
1004 | 1003 | \begin{itemize}
|
1005 |
| -\item \tcode{is_move_assignable_v<first_type>} is \tcode{true} and |
1006 |
| -\item \tcode{is_move_assignable_v<second_type>} is \tcode{true}. |
| 1004 | +\item \tcode{is_move_assignable_v<T1>} is \tcode{true} and |
| 1005 | +\item \tcode{is_move_assignable_v<T2>} is \tcode{true}. |
1007 | 1006 | \end{itemize}
|
1008 | 1007 |
|
1009 | 1008 | \pnum
|
1010 | 1009 | \effects
|
1011 |
| -Assigns to \tcode{first} with \tcode{std::forward<first_type>(p.first)} |
1012 |
| -and to \tcode{second} with\\ \tcode{std::forward<second_type>(p.second)}. |
| 1010 | +Assigns to \tcode{first} with \tcode{std::forward<T1>(p.first)} |
| 1011 | +and to \tcode{second} with \tcode{std::forward<T2>(\brk{}p.second)}. |
1013 | 1012 |
|
1014 | 1013 | \pnum
|
1015 | 1014 | \returns
|
|
1033 | 1032 | \constraints
|
1034 | 1033 | \begin{itemize}
|
1035 | 1034 | \item
|
1036 |
| -\tcode{is_assignable<const first_type\&, first_type>} is \tcode{true} and |
| 1035 | +\tcode{is_assignable<const T1\&, T1>} is \tcode{true} and |
1037 | 1036 | \item
|
1038 |
| -\tcode{is_assignable<const second_type\&, second_type>} is \tcode{true}. |
| 1037 | +\tcode{is_assignable<const T2\&, T2>} is \tcode{true}. |
1039 | 1038 | \end{itemize}
|
1040 | 1039 |
|
1041 | 1040 | \pnum
|
1042 | 1041 | \effects
|
1043 |
| -Assigns \tcode{std::forward<first_type>(p.first)} to \tcode{first} and |
1044 |
| -\tcode{std::forward<second_type>(\brk{}p.second)} to \tcode{second}. |
| 1042 | +Assigns \tcode{std::forward<T1>(p.first)} to \tcode{first} and |
| 1043 | +\tcode{std::forward<T2>(p.second)} to \tcode{second}. |
1045 | 1044 |
|
1046 | 1045 | \pnum
|
1047 | 1046 | \returns
|
|
1057 | 1056 | \pnum
|
1058 | 1057 | \constraints
|
1059 | 1058 | \begin{itemize}
|
1060 |
| -\item \tcode{is_assignable_v<first_type\&, U1>} is \tcode{true} and |
1061 |
| -\item \tcode{is_assignable_v<second_type\&, U2>} is \tcode{true}. |
| 1059 | +\item \tcode{is_assignable_v<T1\&, U1>} is \tcode{true} and |
| 1060 | +\item \tcode{is_assignable_v<T2\&, U2>} is \tcode{true}. |
1062 | 1061 | \end{itemize}
|
1063 | 1062 |
|
1064 | 1063 | \pnum
|
|
1081 | 1080 | \constraints
|
1082 | 1081 | \begin{itemize}
|
1083 | 1082 | \item
|
1084 |
| -\tcode{is_assignable_v<const first_type\&, U1>} is \tcode{true}, and |
| 1083 | +\tcode{is_assignable_v<const T1\&, U1>} is \tcode{true}, and |
1085 | 1084 | \item
|
1086 |
| -\tcode{is_assignable_v<const second_type\&, U2>} is \tcode{true}. |
| 1085 | +\tcode{is_assignable_v<const T2\&, U2>} is \tcode{true}. |
1087 | 1086 | \end{itemize}
|
1088 | 1087 |
|
1089 | 1088 | \effects
|
|
1131 | 1130 | The exception specification is equivalent to:
|
1132 | 1131 | \begin{itemize}
|
1133 | 1132 | \item
|
1134 |
| -\tcode{is_nothrow_swappable_v<first_type> \&\& is_nothrow_swappable_v<second_type>} |
1135 |
| -for the\newline first overload, and |
| 1133 | +\tcode{is_nothrow_swappable_v<T1> \&\& is_nothrow_swappable_v<T2>} |
| 1134 | +for the first overload, and |
1136 | 1135 | \item
|
1137 |
| -\tcode{is_nothrow_swappable_v<const first_type> \&\& is_nothrow_swappable_v<const\newline second_type>} |
| 1136 | +\tcode{is_nothrow_swappable_v<const T1> \&\& is_nothrow_swappable_v<const T2>} |
1138 | 1137 | for the second overload.
|
1139 | 1138 | \end{itemize}
|
1140 | 1139 | \end{itemdescr}
|
|
0 commit comments