#include <boost/cstdint.hpp>
#include <algorithm>
#include <boost/filesystem.hpp>
#include <boost/bind.hpp>
#include <boost/iterators/transform_iterator.hpp>
namespace
fs = boost::filesystem;
boost::uintmax_t dir_size(
const
fs::path &p)
{
return
std::accumulate(
boost::make_transform_iterator(&fs::file_size, fs::recursive_directory_iterator(p)),
boost::make_transform_iterator(&fs::file_size, fs::recursive_directory_iterator()),
static_cast
<boost::uintmax_t>(0));
}