|
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