#include <iostream>

#include <Magick++/Blob.h>
#include <Magick++/Image.h>

extern "C" int main() {
  size_t nFormats;
  Magick::ExceptionInfo ex;
  const Magick::MagickInfo **formats = GetMagickInfoList("*", &nFormats, &ex);

  for (size_t i = 0; i < nFormats; i++) {
    const Magick::MagickInfo *format = formats[i];
    if (format->encoder && format->name) {
      std::cout << format->name << std::endl;
    }
  }

  RelinquishMagickMemory(formats);
}

#include <iostream>
#include <list>

#include <Magick++/Image.h>
#include <Magick++/STL.h>

int main() {
  std::list<Magick::CoderInfo> coderList;
  coderInfoList(&coderList, Magick::CoderInfo::TrueMatch, Magick::CoderInfo::AnyMatch, Magick::CoderInfo::AnyMatch);

  for (std::list<Magick::CoderInfo>::iterator it = coderList.begin(); it != coderList.end(); it++)
  {
    //std::cout << ((*it).isWritable() ? "+" : "-") << (*it).name() << std::endl;
    std::cout << (*it).name() << std::endl;
  }
}

Use `coderInfoList` and prepare for a `writable` flag
Use `coderInfoList` and prepare for a `writable` flag
