work around clang bug with string::empty

provide a functor that calls it instead of using bind as clang was generating link errors.

close #613
allow vector to be used like a container