/Zc:hiddenFriend (Применение правил скрытого друга C++ уровня "Стандартный")

Указывает, что компилятор соответствует стандартному лечению скрытых функций или шаблонов функций C++.

Синтаксис

/Zc:hiddenFriend[-]

Замечания

Параметр /Zc:hiddenFriend включает подмножество /permissive- поведения параметра. Он сообщает компилятору соответствовать стандарту скрытых друзей. Компилятор включает только скрытых друзей в поиске, зависящем от аргументов (ADL) для явных экземпляров или параметров шаблона включающего типа класса. Ограничение позволяет использовать скрытых друзей для поддержания операций с типом от применения к неявным преобразованиям. Этот параметр может повысить скорость сборки в коде, который не может использовать /permissive-в противном случае.

Скрытый friend друг — это шаблон функции или функции, объявленный только в определении шаблона класса или класса. По умолчанию компилятор Microsoft C++ не удаляет скрытые объявления друзей в качестве кандидатов для разрешения перегрузки везде, где он должен. Это устаревшее поведение может замедлить компилятор, включив скрытые функции друга как возможные кандидаты в большем контексте.

Стандартное поведение скрытых друзей C++ включено по умолчанию /permissive-в разделе . Чтобы указать устаревшее поведение скрытого друга при /permissive- указании параметра, используйте /Zc:hiddenFriend-. Использование модулей C++20 требует стандартного скрытого поведения друга.

Этот /Zc:hiddenFriend параметр доступен начиная с Visual Studio 2019 версии 16.4.

Примеры поведения компилятора при указании /Zc:hiddenFriendсм . в правилах поиска скрытых друзей.

Установка данного параметра компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.

  3. Измените свойство "Дополнительные параметры", чтобы включить /Zc:hiddenFriend или /Zc:hiddenFriend- нажмите кнопку "ОК".

См. также

/Zc (Соответствие)
/permissive-