Share via


/Zc:hiddenFriend (Impor regras de amigo oculto padrão do C++)

Especifica que o compilador está em conformidade com o tratamento padrão do C++ de funções de amigo oculto ou modelos de função.

Sintaxe

/Zc:hiddenFriend[-]

Comentários

A opção /Zc:hiddenFriend habilita um subconjunto do comportamento da opção /permissive-. Ela informa ao compilador para se conformar com o padrão para amigos ocultos. O compilador inclui apenas amigos ocultos na ADL (pesquisa dependente de argumento) em instâncias explícitas ou parâmetros de modelo do tipo de classe delimitador. A restrição permite que você use amigos ocultos para impedir que as operações em um tipo se apliquem a conversões implícitas. Essa opção pode aprimorar a velocidade do build no código que não tem a possibilidade de usar a /permissive-.

Um amigo oculto é um modelo de função ou função friend declarado somente dentro de uma definição de classe ou modelo de classe. Por padrão, o compilador do Microsoft C++ não remove declarações de amigo oculto como candidatos à resolução de sobrecarga em todos os lugares em que deveria. Esse comportamento herdado pode causar lentidão no compilador ao incluir as funções de amigo oculto como possíveis candidatas em mais contextos.

O comportamento de amigo oculto padrão do C++ é habilitado por padrão em /permissive-. Para especificar o comportamento de amigo oculto herdado quando a opção /permissive- for especificada, use /Zc:hiddenFriend-. O uso de módulos do C++20 requer um comportamento de amigo oculto padrão.

A opção /Zc:hiddenFriend está disponível a partir do Visual Studio 2019 versão 16.4.

Para obter exemplos de comportamento do compilador quando você especifica /Zc:hiddenFriend, confira Regras de pesquisa de nome de amigo oculto.

Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio

  1. Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.

  2. Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.

  3. Modifique a propriedade Opções Adicionais para incluir /Zc:hiddenFriend ou /Zc:hiddenFriend-, e escolha OK.

Confira também

/Zc (Conformidade)
/permissive-