Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

portée d'un using namespace

3 réponses
Avatar
Doms
Bonjour,

j'aimerais savoir si il y a une regle pour la portée d'un using namespace.
Les tests que j'ai pu faire me laisser à croire que la portée d'un using
namespace est jusque la fin du fichier ou plus loin si le using namespace
pouvait avoir une portée limitée ?

Merci d'avance. Doms.

3 réponses

Avatar
Michael DOUBEZ
Doms wrote:
j'aimerais savoir si il y a une regle pour la portée d'un using
namespace.
Les tests que j'ai pu faire me laisser à croire que la portée d'un using
namespace est jusque la fin du fichier ou plus loin si le using
namespace pouvait avoir une portée limitée ?



Le "using namespace X;" injecte les noms du namespace X dans le
namespace/scope courant de l'unité de compilation (sauf dans le scope
d'une classe).

Typiquement:
- si c'est dans the namespace racine de l'unité de compilation (par
exemple après les headers), ce sera pour tout le fichier.
- si c'est dans une fonction ou un sous-block, ce sera pour cette
fonction ou ce sous-block
- si c'est dans un namespace Y alors dans tout le namespace Y, ses
sous namespaces et où il est utilisé:"using namespace Y;".

--
Michael
Avatar
Doms
Bonjour,

Typiquement:
- si c'est dans the namespace racine de l'unité de compilation (par exemple après les headers), ce sera pour tout le fichier.
- si c'est dans une fonction ou un sous-block, ce sera pour cette fonction ou ce sous-block



tiens, je vais regarder mes tests, j'ai du inclure un mauvais truc,
j'avais l'imrpession que ca n'etait pas restraint au scope...

Merci. Doms.
Avatar
Michael DOUBEZ
Doms wrote:
Bonjour,

Typiquement:
- si c'est dans the namespace racine de l'unité de compilation (par
exemple après les headers), ce sera pour tout le fichier.
- si c'est dans une fonction ou un sous-block, ce sera pour cette
fonction ou ce sous-block



tiens, je vais regarder mes tests, j'ai du inclure un mauvais truc,
j'avais l'imrpession que ca n'etait pas restraint au scope...



En tout cas avec un compilateur qui respecte le standard §7.3.4/2

A using-directive specifies that the names in the nominated namespace
*can be used in the scope in which the using-directive appears* after
the using-directive.[...]

--
Michael