C ++ Правила для замены аргументов - PullRequest
1 голос
/ 24 марта 2012

Следуя C ++ полиморфизму с boost scoped_ptr , я хотел бы понять правила вывода аргументов C ++.Например:

  1. правила полиморфных замен C ++, когда используются интеллектуальные указатели и контейнеры
  2. автоматические преобразования между константными и неконстантными аргументами
  3. когда можноВременные значения передаются как ссылки?
  4. Как правила отличаются при выводе аргументов шаблона.

Если в стандарте есть соответствующий раздел, на который вы можете указать, это тоже поможет.

1 Ответ

0 голосов
/ 25 марта 2012

Я думаю, что этот вопрос слишком широкий, и я не понимаю, что это за вопросы. Джер мой выстрел:

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