#include <vector>
#include <algorithm>

class Foo;

class Base {
protected:
    bool hasChild() const { return !childs_.empty(); }
    std::vector<Foo> childs_;
};

class Foo : public Base {
public:
  bool hasGrandChild() const {
    return std::any_of(childs_.begin(), childs_.end(), [](Foo const &foo) {
        return foo.hasChild();
      });
  }  
};
 
int main()
{
  Foo foo;
  foo.hasGrandChild();
  return 0;
}