|
1755 | 1755 |
|
1756 | 1756 | \item the context is an initialization by conversion function for direct
|
1757 | 1757 | reference binding\iref{over.match.ref} of a reference to function type, the
|
1758 |
| -return type of \tcode{F1} is the same kind of reference (lvalue or rvalue) |
1759 |
| -as the reference being initialized, and the return type of \tcode{F2} is not |
| 1758 | +return type of $\tcode{F}_1$ is the same kind of reference (lvalue or rvalue) |
| 1759 | +as the reference being initialized, and the return type of $\tcode{F}_2$ is not |
1760 | 1760 | \begin{example}
|
1761 | 1761 | \begin{codeblock}
|
1762 | 1762 | template <class T> struct A {
|
|
1772 | 1772 | or, if not that,
|
1773 | 1773 |
|
1774 | 1774 | \item
|
1775 |
| -\tcode{F1} |
| 1775 | +$\tcode{F}_1$ |
1776 | 1776 | is not a function template specialization and
|
1777 |
| -\tcode{F2} |
| 1777 | +$\tcode{F}_2$ |
1778 | 1778 | is a
|
1779 | 1779 | function template
|
1780 | 1780 | specialization, or, if not that,
|
1781 | 1781 |
|
1782 | 1782 | \item
|
1783 |
| -\tcode{F1} |
| 1783 | +$\tcode{F}_1$ |
1784 | 1784 | and
|
1785 |
| -\tcode{F2} |
| 1785 | +$\tcode{F}_2$ |
1786 | 1786 | are
|
1787 | 1787 | function template specializations,
|
1788 | 1788 | and the function template
|
1789 | 1789 | for
|
1790 |
| -\tcode{F1} |
| 1790 | +$\tcode{F}_1$ |
1791 | 1791 | is more specialized than the template for
|
1792 |
| -\tcode{F2} |
| 1792 | +$\tcode{F}_2$ |
1793 | 1793 | according to the partial ordering rules described in~\ref{temp.func.order},
|
1794 | 1794 | or, if not that,
|
1795 | 1795 |
|
1796 | 1796 | \item
|
1797 |
| -\tcode{F1} and \tcode{F2} are non-template functions and |
| 1797 | +$\tcode{F}_1$ and $\tcode{F}_2$ are non-template functions and |
1798 | 1798 | \begin{itemize}
|
1799 | 1799 | \item
|
1800 | 1800 | they have the same non-object-parameter-type-lists\iref{dcl.fct}, and
|
|
1804 | 1804 | if both are non-static member functions,
|
1805 | 1805 | they have the same types for their object parameters, and
|
1806 | 1806 | \item
|
1807 |
| -\tcode{F1} is more constrained than \tcode{F2} |
| 1807 | +$\tcode{F}_1$ is more constrained than $\tcode{F}_2$ |
1808 | 1808 | according to the partial ordering of constraints described in
|
1809 |
| -\ref{temp.constr.order}, |
| 1809 | +\ref{temp.constr.order} |
1810 | 1810 | \end{itemize}
|
1811 |
| -or if not that, |
1812 | 1811 | \begin{example}
|
1813 | 1812 | \begin{codeblock}
|
1814 | 1813 | template <typename T = int>
|
|
1823 | 1822 | }
|
1824 | 1823 | \end{codeblock}
|
1825 | 1824 | \end{example}
|
| 1825 | +or, if not that, |
1826 | 1826 |
|
1827 | 1827 | \item
|
1828 |
| -\tcode{F1} is a constructor for a class \tcode{D}, |
1829 |
| -\tcode{F2} is a constructor for a base class \tcode{B} of \tcode{D}, and |
| 1828 | +$\tcode{F}_1$ is a constructor for a class \tcode{D}, |
| 1829 | +$\tcode{F}_2$ is a constructor for a base class \tcode{B} of \tcode{D}, and |
1830 | 1830 | for all arguments
|
1831 |
| -the corresponding parameters of \tcode{F1} and \tcode{F2} have the same type |
| 1831 | +the corresponding parameters of $\tcode{F}_1$ and $\tcode{F}_2$ have the same type |
1832 | 1832 | \begin{example}
|
1833 | 1833 | \begin{codeblock}
|
1834 | 1834 | struct A {
|
|
1848 | 1848 | or, if not that,
|
1849 | 1849 |
|
1850 | 1850 | \item
|
1851 |
| -\tcode{F2} is a rewritten candidate\iref{over.match.oper} and |
1852 |
| -\tcode{F1} is not |
| 1851 | +$\tcode{F}_2$ is a rewritten candidate\iref{over.match.oper} and |
| 1852 | +$\tcode{F}_1$ is not |
1853 | 1853 | \begin{example}
|
1854 | 1854 | \begin{codeblock}
|
1855 | 1855 | struct S {
|
|
1862 | 1862 | or, if not that,
|
1863 | 1863 |
|
1864 | 1864 | \item
|
1865 |
| -\tcode{F1} and \tcode{F2} are rewritten candidates, and |
1866 |
| -\tcode{F2} is a synthesized candidate |
| 1865 | +$\tcode{F}_1$ and $\tcode{F}_2$ are rewritten candidates, and |
| 1866 | +$\tcode{F}_2$ is a synthesized candidate |
1867 | 1867 | with reversed order of parameters
|
1868 |
| -and \tcode{F1} is not |
| 1868 | +and $\tcode{F}_1$ is not |
1869 | 1869 | \begin{example}
|
1870 | 1870 | \begin{codeblock}
|
1871 | 1871 | struct S {
|
|
1875 | 1875 | bool b = 1 < S(); // calls \#2
|
1876 | 1876 | \end{codeblock}
|
1877 | 1877 | \end{example}
|
1878 |
| -or, if not that |
| 1878 | +or, if not that, |
1879 | 1879 |
|
1880 | 1880 | \item
|
1881 |
| -\tcode{F1} and \tcode{F2} are generated |
| 1881 | +$\tcode{F}_1$ and $\tcode{F}_2$ are generated |
1882 | 1882 | from class template argument deduction\iref{over.match.class.deduct}
|
1883 | 1883 | for a class \tcode{D}, and
|
1884 |
| -\tcode{F2} is generated |
| 1884 | +$\tcode{F}_2$ is generated |
1885 | 1885 | from inheriting constructors from a base class of \tcode{D}
|
1886 |
| -while \tcode{F1} is not, and |
| 1886 | +while $\tcode{F}_1$ is not, and |
1887 | 1887 | for each explicit function argument,
|
1888 |
| -the corresponding parameters of \tcode{F1} and \tcode{F2} |
| 1888 | +the corresponding parameters of $\tcode{F}_1$ and $\tcode{F}_2$ |
1889 | 1889 | are either both ellipses or have the same type,
|
1890 | 1890 | or, if not that,
|
1891 | 1891 |
|
1892 | 1892 | \item
|
1893 |
| -\tcode{F1} is generated from a |
| 1893 | +$\tcode{F}_1$ is generated from a |
1894 | 1894 | \grammarterm{deduction-guide}\iref{over.match.class.deduct}
|
1895 |
| -and \tcode{F2} is not, or, if not that, |
| 1895 | +and $\tcode{F}_2$ is not, or, if not that, |
1896 | 1896 |
|
1897 | 1897 | \item
|
1898 |
| -\tcode{F1} is the copy deduction candidate\iref{over.match.class.deduct} |
1899 |
| -and \tcode{F2} is not, or, if not that, |
| 1898 | +$\tcode{F}_1$ is the copy deduction candidate\iref{over.match.class.deduct} |
| 1899 | +and $\tcode{F}_2$ is not, or, if not that, |
1900 | 1900 |
|
1901 | 1901 | \item
|
1902 |
| -\tcode{F1} is generated from a non-template constructor |
1903 |
| -and \tcode{F2} is generated from a constructor template. |
| 1902 | +$\tcode{F}_1$ is generated from a non-template constructor |
| 1903 | +and $\tcode{F}_2$ is generated from a constructor template. |
1904 | 1904 | \begin{example}
|
1905 | 1905 | \begin{codeblock}
|
1906 | 1906 | template <class T> struct A {
|
|
0 commit comments