AP
Size: a a a
AP
AP
АВ
AK
VS
W
VR
ПК
VR
AT
AF
// foo.hВсе прекрасно компилируется, вы получаете разные лэйауты в разных юнитах трансляции для имени foo и просто какуюто кашу в памяти в рантайме, дебажится это плохо, потому что детектится проблема неочевидно, особенно на больших кодовых базах, довольно неприятные баги.
namespace my { class foo; }
// bar.h
#include "foo.h"
namespace my::internal
{
void bar( foo& ); // << unqualified name. По задумке автора это my::foo
}
// internal/foo.h
namespace my::internal { class foo; }
// baz.cpp
#include "internal/foo.h"
#include "bar.h" // << а вот тут у нас odr-violation и my::internal::bar( foo& ) теперь принимает my::internal::foo
AK
AF
AK
AF
AF
ПК
ПК
VR
AK