It might not be obvious, but not only does ECL enable the embedding of C code in Lisp code, it supports C++ as well. The following works, for instance (assuming your ECL was compiled --with-cxx):

(in-package #:cl-user)

(ffi:clines "#include <sstream>")
(ffi:clines "#include <iostream>")
(ffi:clines "#include <cstring>")
(ffi:clines "#include <gc/gc_cpp.h>")

(defun c++hex (x)
  (ffi:c-inline (x) (:int) :cstring "{
    std::ostringstream out;
    out << std::hex << #0;
    @(return) = new (GC) char[out.str().size() + 1];
    strcpy(@(return), out.str().c_str());
  }")))

Then, at the REPL:

CL-USER> (c++hex 123456)
"1e240"

I think that's pretty nifty.