|
23 | 23 | of the arguments at the point of use with the types of the parameters
|
24 | 24 | in the overloaded declarations that are visible at the point of use.
|
25 | 25 | This function selection process is called
|
26 |
| -\term{overload resolution} |
27 |
| -and |
28 |
| -is defined in~\ref{over.match}. |
| 26 | +\defn{overload resolution} and is defined in~\ref{over.match}. |
29 | 27 | \begin{example}
|
30 | 28 |
|
31 | 29 | \indextext{overloading!example of}%
|
|
396 | 394 | Overload resolution is a mechanism for selecting the best
|
397 | 395 | function to call given a list of expressions that are to be the
|
398 | 396 | arguments of the call and a set of
|
399 |
| -\term{candidate functions} |
| 397 | +\defnx{candidate functions}{candidate function} |
400 | 398 | that can
|
401 | 399 | be called based on the context of the call.
|
402 | 400 | The selection
|
|
831 | 829 | of ($\tcode{P}_1, \dotsc, \tcode{P}_n$) returning \tcode{R}'',
|
832 | 830 | or the type
|
833 | 831 | ``reference to function of ($\tcode{P}_1, \dotsc, \tcode{P}_n$)
|
834 |
| -returning \tcode{R}'', a \term{surrogate call function} with the unique name |
| 832 | +returning \tcode{R}'', a \defn{surrogate call function} with the unique name |
835 | 833 | \placeholder{call-function}
|
836 | 834 | and having the form
|
837 | 835 |
|
|
982 | 980 | and a right operand of a type whose cv-unqualified version is
|
983 | 981 | \tcode{T2},
|
984 | 982 | three sets of candidate functions, designated
|
985 |
| -\term{member candidates}, |
986 |
| -\term{non-member candidates} |
987 |
| -and |
988 |
| -\term{built-in candidates}, |
| 983 | +\defnx{member candidates}{member candidate}, |
| 984 | +\defnx{non-member candidates}{non-member candidate} |
| 985 | +and \defnx{built-in candidates}{built-in candidate}, |
989 | 986 | are constructed as follows:
|
990 | 987 | \begin{itemize}
|
991 | 988 | \item
|
|
1592 | 1589 | \tcode{F}
|
1593 | 1590 | to be a viable function, there shall exist for each
|
1594 | 1591 | argument an
|
1595 |
| -\term{implicit conversion sequence}\iref{over.best.ics} that |
| 1592 | +implicit conversion sequence\iref{over.best.ics} that |
1596 | 1593 | converts that argument to the corresponding parameter of
|
1597 | 1594 | \tcode{F}.
|
1598 | 1595 | If the parameter has reference type, the implicit conversion sequence
|
|
1639 | 1636 | \tcode{F1}
|
1640 | 1637 | is defined
|
1641 | 1638 | to be a
|
1642 |
| -\term{better} |
| 1639 | +\defnx{better}{overloading!resolution!better viable function} |
1643 | 1640 | function than another viable function
|
1644 | 1641 | \tcode{F2}
|
1645 | 1642 | if
|
|
1910 | 1907 |
|
1911 | 1908 | \rSec3[over.best.ics]{Implicit conversion sequences}%
|
1912 | 1909 | \indextext{overloading!resolution!implicit conversions and|(}
|
| 1910 | +\indextext{implicit conversion sequence|see{conversion sequence, implicit}} |
1913 | 1911 |
|
1914 | 1912 | \pnum
|
1915 |
| -An |
1916 |
| -\term{implicit conversion sequence} |
1917 |
| -\indextext{sequence!implicit conversion}% |
| 1913 | +An \defnx{implicit conversion sequence}{conversion sequence!implicit} |
1918 | 1914 | is a sequence of conversions used
|
1919 | 1915 | to convert an argument in a function call to the type of the
|
1920 | 1916 | corresponding parameter of the function being called.
|
|
1944 | 1940 |
|
1945 | 1941 | \begin{itemize}
|
1946 | 1942 | \item
|
1947 |
| -a |
1948 |
| -\term{standard conversion sequence}\iref{over.ics.scs}, |
| 1943 | +a standard conversion sequence\iref{over.ics.scs}, |
1949 | 1944 | \item
|
1950 |
| -a |
1951 |
| -\term{user-defined conversion sequence}\iref{over.ics.user}, or |
| 1945 | +a user-defined conversion sequence\iref{over.ics.user}, or |
1952 | 1946 | \item
|
1953 |
| -an |
1954 |
| -\term{ellipsis conversion sequence}\iref{over.ics.ellipsis}. |
| 1947 | +an ellipsis conversion sequence\iref{over.ics.ellipsis}. |
1955 | 1948 | \end{itemize}
|
1956 | 1949 |
|
1957 | 1950 | \pnum
|
|
2050 | 2043 | convert the argument to the parameter type, the implicit
|
2051 | 2044 | conversion sequence associated with the parameter is defined to be
|
2052 | 2045 | the unique conversion sequence designated the
|
2053 |
| -\term{ambiguous conversion sequence}. |
2054 |
| -\indextext{sequence!ambiguous conversion}% |
| 2046 | +\defnx{ambiguous conversion sequence}{conversion sequence!ambiguous}. |
2055 | 2047 | For the purpose of ranking implicit conversion sequences as described
|
2056 | 2048 | in~\ref{over.ics.rank}, the ambiguous conversion sequence is treated
|
2057 | 2049 | as a user-defined conversion sequence that is indistinguishable from any
|
|
2484 | 2476 | \pnum
|
2485 | 2477 | This subclause defines a partial ordering of implicit conversion
|
2486 | 2478 | sequences based on the relationships
|
2487 |
| -\term{better conversion sequence} |
| 2479 | +\defnx{better conversion sequence}{conversion sequence!better} |
2488 | 2480 | and
|
2489 |
| -\term{better conversion}. |
| 2481 | +\defnx{better conversion}{conversion!better}. |
2490 | 2482 | If an implicit conversion sequence S1 is
|
2491 | 2483 | defined by these rules to be a better conversion sequence than
|
2492 | 2484 | S2, then it is also the case that S2 is a
|
2493 |
| -\term{worse conversion sequence} |
| 2485 | +\defnx{worse conversion sequence}{conversion sequence!worse} |
2494 | 2486 | than S1.
|
2495 | 2487 | If conversion sequence S1 is neither better
|
2496 | 2488 | than nor worse than conversion sequence S2, S1 and S2 are said to
|
2497 | 2489 | be
|
2498 |
| -\term{indistinguishable conversion sequences}. |
| 2490 | +\defnx{indistinguishable conversion sequences}{conversion sequence!indistinguishable}. |
2499 | 2491 |
|
2500 | 2492 | \pnum
|
2501 | 2493 | When comparing the basic forms of implicit conversion sequences
|
|
3049 | 3041 |
|
3050 | 3042 | \pnum
|
3051 | 3043 | \indextext{operator!overloaded}%
|
3052 |
| -\indextext{function!operator}% |
3053 | 3044 | A function declaration having one of the following
|
3054 | 3045 | \grammarterm{operator-function-id}{s}
|
3055 | 3046 | as its name declares an
|
3056 |
| -\term{operator function}. |
| 3047 | +\defnx{operator function}{function!operator}. |
3057 | 3048 | A function template declaration having one of the
|
3058 | 3049 | following \grammarterm{operator-function-id}{s} as its name
|
3059 |
| -declares an \term{operator function template}. A specialization |
| 3050 | +declares an \defnx{operator function template}{function!operator!template}. A specialization |
3060 | 3051 | of an operator function template is also an operator function.
|
3061 | 3052 | An operator function is said to
|
3062 |
| -\term{implement} |
| 3053 | +\defnx{implement}{operator!implementation} |
3063 | 3054 | the operator named in its
|
3064 | 3055 | \grammarterm{operator-function-id}.
|
3065 | 3056 |
|
|
3484 | 3475 | implicit terminating \tcode{'\textbackslash 0'}.
|
3485 | 3476 | The \grammarterm{ud-suffix} of the \grammarterm{user-defined-string-literal} or
|
3486 | 3477 | the \grammarterm{identifier} in a \grammarterm{literal-operator-id} is called a
|
3487 |
| -\term{literal suffix identifier}. |
| 3478 | +\defnx{literal suffix identifier}{literal!suffix identifier}. |
3488 | 3479 | Some literal suffix identifiers are reserved for future standardization;
|
3489 | 3480 | see~\ref{usrlit.suffix}. A declaration whose \grammarterm{literal-operator-id} uses
|
3490 | 3481 | such a literal suffix identifier is ill-formed, no diagnostic required.
|
|
3495 | 3486 | function or function template (it could be a friend
|
3496 | 3487 | function\iref{class.friend}), an explicit instantiation or specialization of a
|
3497 | 3488 | function template, or a \grammarterm{using-declaration}\iref{namespace.udecl}.
|
3498 |
| -A function declared with a \grammarterm{literal-operator-id} is a \term{literal |
3499 |
| -operator}. A function template declared with a \grammarterm{literal-operator-id} |
3500 |
| -is a \term{literal operator template}. |
| 3489 | +A function declared with a \grammarterm{literal-operator-id} is a \defnx{literal |
| 3490 | +operator}{literal!operator}. A function template declared with a \grammarterm{literal-operator-id} |
| 3491 | +is a \defnx{literal operator template}{literal!operator!template}. |
3501 | 3492 |
|
3502 | 3493 | \pnum
|
3503 | 3494 | The declaration of a literal operator shall have a
|
|
3521 | 3512 | ill-formed.
|
3522 | 3513 |
|
3523 | 3514 | \pnum
|
3524 |
| -A \term{raw literal operator} is a literal operator with a single parameter |
| 3515 | +A \defnx{raw literal operator}{literal!operator!raw} is a literal operator with a single parameter |
3525 | 3516 | whose type is \tcode{const char*}.
|
3526 | 3517 |
|
3527 | 3518 | \pnum
|
|
0 commit comments