Q:

Calling constructor of potential child from base in C++

How can someone implement this pattern:
  class Base {//doesn't know anything about potential descendant-classes, like Child
  public:
      Base * foo( void) {
        //some code
          return ( Base *) new ! Child-constructor!(); 
      }
  };

  class Child : public Base { };

//—————————————————————————————————————————————————
  #include <iostream>
  #include <typeinfo>

  using namespace std;

  int main( void) {
      Base * base_p = Child().f();

      cout << typeid( *base_p).name(); //expected to get "Child"

  return 0;
  }

I can't find the right syntax for this type of constructions (calling the "potential" child constructor). 
UPD: I forgot to mention (didn't think that there can be missunderstanding), that Child class must not be known in definition of Base.  So I wanted foo to call the constructor of the class in which it's gonna be inherited. 

A:

"... that Child class must not be known in definition of Base.  So I wanted foo to call the constructor of the class in which it's gonna be inherited." 

IMHO the easiest way is to provide a templated factory function with Base
class Base {
public:
    template<class Derived>
    static std::unique_ptr<Base> foo( void) {
      //some code
      return std::unique_ptr<Base>(new Derived());
    }
};

class Child : public Base {
public:
    Child() {}
    virtual ~Child() {}
};

int main() {
    std::unique_ptr<Base> p = Base::foo<Child>();
    return 0;
}

Check the compilable sample here please.