/Zc:hiddenFriend
(Aplicar reglas estándar de amigos ocultos de C++)
Especifica que el compilador se ajusta al tratamiento estándar de C++ de funciones o plantillas de función de amigos ocultos.
Sintaxis
/Zc:hiddenFriend
[-
]
Comentarios
La opción /Zc:hiddenFriend
habilita un subconjunto del comportamiento de la opción /permissive-
. Indica al compilador que cumpla con el estándar para amigos ocultos. El compilador solo incluye amigos ocultos en la búsqueda dependiente del argumento (ADL) para instancias explícitas o parámetros de plantilla del tipo de clase envolvente. La restricción permite usar amigos ocultos para evitar que las operaciones en un tipo se apliquen a conversiones implícitas. Esta opción puede mejorar la velocidad de compilación del código que, en caso contrario, no puede usar /permissive-
.
Un amigo oculto es una función o una plantilla de función friend
declarada solo dentro de una definición de clase o de plantilla de clase. De manera predeterminada, el compilador de Microsoft C++ no quita las declaraciones de amigos ocultos como candidatos para la resolución de sobrecargas en todos los sitios en los que debería. Este comportamiento heredado puede ralentizar el compilador mediante la inclusión de las funciones de amigos ocultos como posibles candidatos en más contextos.
El comportamiento estándar de los amigos ocultos de C++ está habilitado de manera predeterminada en /permissive-
. Para especificar el comportamiento heredado de los amigos ocultos cuando se especifica la opción /permissive-
, use /Zc:hiddenFriend-
. El uso de módulos de C++20 requiere un comportamiento estándar de los amigos ocultos.
La opción /Zc:hiddenFriend
está disponible a partir de la versión 16.4 de Visual Studio 2019.
Para obtener ejemplos de comportamiento del compilador al especificar /Zc:hiddenFriend
, consulte Reglas de búsqueda de nombres de amigos ocultos.
Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio
Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.
Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.
Modifique la propiedad Opciones adicionales para que incluya
/Zc:hiddenFriend
o/Zc:hiddenFriend-
y, después, seleccione Aceptar.