The macro for BOOST_STRONG_TYPEDEF defines a copy constructor, and copy assignment, but not a move constructor, or move assignment.
Should add:
D(D && t_) BOOST_NOEXCEPT_IF(...) : t(std::move(t_.t)) {}
D& operator=(D&& rhs) BOOST_NOEXCEPT_IF(...) {t = std::move(rhs.t); return *this;} \