Функция, выбранная разрешением перегрузки, должна разрешиться до функции, объявленной ранее в модуле перевода
Функция, выбранная разрешением перегрузки, должна разрешаться до функции, объявленной ранее в модуле перевода.
В целом вы не можете вызвать функцию до ее объявления, поэтому ожидаете, что вызов функции разрешится к ранее объявленной функции. Однако в случае разрешения перегрузки вызова функции внутри шаблона это ожидание может быть не удовлетворено. Разрешение этой перегрузки происходит в точке создания шаблона, а не в точке определения шаблона. Таким образом, вызов может разрешиться к функции, которая объявляется после определения шаблона и приводит к неожиданным результатам. См. примеры ниже.
Чтобы удовлетворить ожиданию того, что вызов функции всегда разрешается к ранее объявленной функции, объявите перегрузки функции перед вызовом ее. Кроме того, используйте оператор разрешения возможностей видимости ::
или круглые скобки, чтобы явным образом вызвать конкретную ранее объявленную функцию и обойти механизм разрешения перегрузки.
Чекер помечает вызов функции или оператора в определении шаблона функции, если функция или оператор объявлены после определения шаблона.
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Шаблоны |
Категория: Требуемая |