Если я правильно понимаю Страуструпа, это «полные» объявления:
// foo.h
void foo();
struct S {
int bar() const;
};
Это «неполные» объявления, и вы не должны писать такие заголовки:
// bar_start.h
struct Bar {
// bar_end.h
};
Делай:
#include "foo.h"
Не:
#include "bar_start.h"
void foo(); // foo is a member of Bar
#include "bar_end.h"