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