For the Bar(); usage in main.cpp, include-cleaner considers both UsingType (Bar) and the underlying type (Foo) Foo constructor as uses (thus we insert both foo.h, and bar.h). In this case, we should not consider the underlying type Foo as a use.
// foo.h
namespace ns {
class Foo {};
}
// bar.h
namespace ns2 {
using Bar = ns::Foo;
}
// main.cpp
#include "bar.h"
void k() {
ns2::Bar();
}
For the
Bar();usage in main.cpp, include-cleaner considers both UsingType (Bar) and theunderlying type (Foo)Fooconstructor as uses (thus we insert bothfoo.h, andbar.h). In this case, we should not consider the underlying typeFooas a use.