/Zc:referenceBinding (Appliquer les règles de liaison de références)
Lorsque l’option /Zc :referenceBinding est spécifiée, le compilateur n’autorise pas une référence non-const lvalue à lier à un point temporaire.
Syntaxe
/Zc :referenceBinding[-]
Notes
Si /Zc :referenceBinding est spécifié, le compilateur suit la section 8.5.3 de la norme C++11 : elle n’autorise pas les expressions qui lient un type défini par l’utilisateur temporaire à une référence non-const lvalue. Par défaut, ou si /Zc :referenceBinding- est spécifié, le compilateur autorise des expressions telles qu’une extension Microsoft, mais un avertissement de niveau 4 est émis. Pour la sécurité du code, la portabilité et la conformité, nous vous recommandons d’utiliser /Zc :referenceBinding.
L’option /Zc :referenceBinding est désactivée par défaut. L’option du compilateur /permissive définit implicitement cette option, mais elle peut être substituée à l’aide de /Zc :referenceBinding-.
Exemple
Cet exemple montre l’extension Microsoft qui permet à un type défini par l’utilisateur d’être lié à une référence non-const lvalue.
// zcreferencebinding.cpp
struct S {
};
void f(S&) {
}
S g() {
return S{};
}
int main() {
S& s = g(); // warning C4239 at /W4
const S& cs = g(); // okay, bound to const ref
f(g()); // Extension: error C2664 only if /Zc:referenceBinding
}
Pour plus d’informations sur les problèmes de conformité dans Visual C++, consultez Nonstandard Behavior.
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.
Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.
Modifiez la propriété Options supplémentaires pour inclure /Zc :referenceBinding , puis choisissez OK.
Voir aussi
Options du compilateur MSVC
Syntaxe de la ligne de commande du compilateur MSVC
/Zc (Conformité)