|
865 | 865 | \end{itemize}
|
866 | 866 | \end{note}
|
867 | 867 |
|
| 868 | +\pnum |
| 869 | +Two non-static member functions have |
| 870 | +\defnadjx{corresponding}{object parameters}{object parameter} if: |
| 871 | +\begin{itemize} |
| 872 | +\item |
| 873 | +exactly one is an implicit object member function |
| 874 | +with no \grammarterm{ref-qualifier} and |
| 875 | +the types of their object parameters\iref{dcl.fct}, |
| 876 | +after removing top-level references, |
| 877 | +are the same, or |
| 878 | +\item |
| 879 | +their object parameters have the same type. |
| 880 | +\end{itemize} |
| 881 | +Two non-static member function templates have |
| 882 | +\defnadjx{corresponding}{object parameters}{object parameter} if: |
| 883 | +\begin{itemize} |
| 884 | +\item |
| 885 | +exactly one is an implicit object member function |
| 886 | +with no \grammarterm{ref-qualifier} and |
| 887 | +the types of their object parameters, |
| 888 | +after removing any references, |
| 889 | +are equivalent, or |
| 890 | +\item |
| 891 | +the types of their object parameters are equivalent. |
| 892 | +\end{itemize} |
| 893 | + |
868 | 894 | \pnum
|
869 | 895 | Two declarations \defn{correspond}
|
870 | 896 | if they (re)introduce the same name,
|
|
885 | 911 | each declares a function or function template, except when
|
886 | 912 | \begin{itemize}
|
887 | 913 | \item
|
888 |
| -both declare functions with the same parameter-type-list, |
| 914 | +both declare functions with the same non-object-parameter-type-list, |
889 | 915 | \begin{footnote}
|
890 | 916 | An implicit object parameter\iref{over.match.funcs}
|
891 | 917 | is not part of the parameter-type-list.
|
892 | 918 | \end{footnote}
|
893 | 919 | equivalent\iref{temp.over.link} trailing \grammarterm{requires-clause}s
|
894 | 920 | (if any, except as specified in \ref{temp.friend}), and,
|
895 | 921 | if both are non-static members,
|
896 |
| -the same \grammarterm{cv-qualifier}s (if any) and |
897 |
| -\grammarterm{ref-qualifier} (if both have one), or |
| 922 | +they have corresponding object parameters, or |
898 | 923 | \item
|
899 | 924 | both declare function templates with equivalent
|
900 |
| -parameter-type-lists, |
| 925 | +non-object-parameter-type-lists, |
901 | 926 | return types (if any),
|
902 | 927 | \grammarterm{template-head}s, and
|
903 | 928 | trailing \grammarterm{requires-clause}s (if any), and,
|
904 | 929 | if both are non-static members,
|
905 |
| -the same \grammarterm{cv-qualifier}s (if any) and |
906 |
| -\grammarterm{ref-qualifier} (if both have one). |
| 930 | +they have corresponding object parameters. |
907 | 931 | \end{itemize}
|
908 | 932 | \end{itemize}
|
909 | 933 | \begin{note}
|
|
923 | 947 | \begin{codeblock}
|
924 | 948 | typedef int Int;
|
925 | 949 | enum E : int { a };
|
926 |
| -void f(int); // \#1 |
927 |
| -void f(Int) {} // defines \#1 |
928 |
| -void f(E) {} // OK: another overload |
| 950 | +void f(int); // \#1 |
| 951 | +void f(Int) {} // defines \#1 |
| 952 | +void f(E) {} // OK: another overload |
929 | 953 |
|
930 | 954 | struct X {
|
931 | 955 | static void f();
|
932 |
| - void f() const; // error: redeclaration |
| 956 | + void f() const; // error: redeclaration |
933 | 957 | void g();
|
934 |
| - void g() const; // OK |
935 |
| - void g() &; // error: redeclaration |
| 958 | + void g() const; // OK |
| 959 | + void g() &; // error: redeclaration |
| 960 | + |
| 961 | + void h(this X&, int); |
| 962 | + void h(int) &&; // OK: another overload |
| 963 | + void j(this const X&); |
| 964 | + void j() const&; // error: redeclaration |
| 965 | + void k(); |
| 966 | + void k(this X&); // error: redeclaration |
936 | 967 | };
|
937 | 968 | \end{codeblock}
|
938 | 969 | \end{example}
|
|
2947 | 2978 | \indextext{memory model|(}%
|
2948 | 2979 | The fundamental storage unit in the \Cpp{} memory model is the
|
2949 | 2980 | \defn{byte}.
|
2950 |
| -A byte is at least large enough to contain any member of the basic |
2951 |
| -\indextext{character set!basic execution}% |
2952 |
| -execution character set\iref{lex.charset} |
| 2981 | +A byte is at least large enough to contain |
| 2982 | +the ordinary literal encoding of any element of the basic |
| 2983 | +\indextext{character set!basic literal}% |
| 2984 | +literal character set\iref{lex.charset} |
2953 | 2985 | and the eight-bit code units of the Unicode
|
2954 | 2986 | \begin{footnote}
|
2955 | 2987 | Unicode\textregistered\ is a registered trademark of Unicode, Inc.
|
|
4849 | 4881 | Type \keyword{char} is a distinct type
|
4850 | 4882 | that has an \impldef{underlying type of \tcode{char}} choice of
|
4851 | 4883 | ``\tcode{\keyword{signed} \keyword{char}}'' or ``\tcode{\keyword{unsigned} \keyword{char}}'' as its underlying type.
|
4852 |
| -The values of type \keyword{char} can represent distinct codes |
4853 |
| -for all members of the implementation's basic character set. |
4854 | 4884 | The three types \keyword{char}, \tcode{\keyword{signed} \keyword{char}}, and \tcode{\keyword{unsigned} \keyword{char}}
|
4855 | 4885 | are collectively called
|
4856 | 4886 | \defnadjx{ordinary character}{types}{type}.
|
|
4911 | 4941 |
|
4912 | 4942 | \pnum
|
4913 | 4943 | \indextext{type!integral}%
|
4914 |
| -Types |
4915 |
| -\keyword{bool}, |
4916 |
| -\keyword{char}, \keyword{wchar_t}, |
4917 |
| -\keyword{char8_t}, \keyword{char16_t}, \keyword{char32_t}, and |
| 4944 | +The types \keyword{char}, \keyword{wchar_t}, |
| 4945 | +\keyword{char8_t}, \keyword{char16_t}, and \keyword{char32_t} |
| 4946 | +are collectively called \defnadjx{character}{types}{type}. |
| 4947 | +The character types, \keyword{bool}, |
4918 | 4948 | the signed and unsigned integer types,
|
4919 | 4949 | and cv-qualified versions\iref{basic.type.qualifier} thereof,
|
4920 | 4950 | are collectively termed
|
|
0 commit comments