A gstreamermm Gst::ElementFactory example.
#include <gstreamermm.h>
int main(int argc, char *argv[])
{
  
  std::cout << 
"List of primary demuxers: " << 
std::endl;
   for (Glib::RefPtr<Gst::ElementFactory> factory
  {
    std::cout << 
" * " << factory->get_name() << 
std::endl;
  }
  if (!fakesrc_factory)
  {
    std::cerr << 
"Failed to find factory of type 'fakesrc'" << 
std::endl;
     return -1;
  }
  
  std::cout << "Author of the element '" << fakesrc_factory->get_name() << "' is "
      << fakesrc_factory->get_metadata(GST_ELEMENT_METADATA_AUTHOR) << std::endl << 
std::endl;
  
  std::cout << 
"All information about element '" << fakesrc_factory->get_name() << 
"':" << 
std::endl;
  for (auto metadata_key : fakesrc_factory->get_metadata_keys())
  {
    std::cout << 
" * " << metadata_key << 
": " << fakesrc_factory->get_metadata(metadata_key) << 
std::endl;
  }
  
  
  {
    Glib::RefPtr<Gst::Element> fakesrc = fakesrc_factory->create("source");
    if (!fakesrc)
    {
      std::cerr << 
"Failed to create element of type 'fakesrc'" << 
std::endl;
      return -1;
    }
  }
  
  {
    if (!fakesrc)
    {
      std::cerr << 
"Failed to create element of type 'fakesrc'" << 
std::endl;
      return -1;
    }
  }
  return 0;
}