19 #ifndef JOIN_H_INCLUDED 
   20 #define JOIN_H_INCLUDED 
   26 template <
class Stream, 
class Iter>
 
   33     for (++iter; iter != end; ++iter)
 
   34         s << delimiter << *iter;
 
   38 template <
class Collection>
 
   50     template <
class Stream>
 
   62 template <
class Collection, std::
size_t N>
 
   74     template <
class Stream>
 
   83 template <std::
size_t N>
 
   95     template <
class Stream>
 
  100         if (N > 0 && *(end - 1) == 
'\0')
 
  
Stream & join(Stream &s, Iter iter, Iter end, std::string const &delimiter)
const std::string delimiter
CollectionAndDelimiter(Collection const c[N], std::string delim)
Collection const  & collection
CollectionAndDelimiter(Collection const &c, std::string delim)
const std::string delimiter
const std::string delimiter
CollectionAndDelimiter(char const c[N], std::string delim)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
friend Stream & operator<<(Stream &s, CollectionAndDelimiter const &cd)
Collection const  * collection