C++ Правила для замены аргументов
После полиморфизма C++ с boost scoped_ptr я хотел бы понять правила вывода аргументов C++. Например:
- правила полиморфных замен C++, когда используются умные указатели и контейнеры
- автоматические преобразования между константными и неконстантными аргументами
- когда временные ссылки могут быть переданы в качестве ссылок?
- Чем отличаются правила при выводе аргументов шаблона.
Если в стандарте есть соответствующий раздел, на который вы можете указать, это тоже поможет.
1 ответ
Я думаю, что этот вопрос слишком широкий, и я не понимаю, каковы все вопросы. Джере мой выстрел
- Шаблонный вывод не заботит базовые классы или преобразования. Это выводит статический тип. Только если прямого совпадения нет, он попытается решить эту проблему, если преобразование может решить эту проблему, и, как обычно, будет применено только одно преобразование. Например, если переданный тип является необработанным указателем, а ожидаемый тип является умным указателем, который может быть неявно преобразован из встроенного указателя, он должен найти это.
- Для типов значений constness игнорируется. Для типов ссылок или указателей неконстантный указатель или ссылка могут преобразовываться в соответствующую неконстантную версию. Однако выведенная переменная не будет иметь cv-qualifiers, хотя может быть возможно явно создать ту же функцию с типами cv-qualifird. Это вы выводите AB
T&&
применяются разные правила. - Временный может привязываться только к
const
квалифицированные ссылки на lvalue и ссылки на rvalue. Это универсально в языке. - Что это за сравнение?