    #include <map>
    #include <iostream>

    struct no_copy_type {
      double d;
      no_copy_type(no_copy_type const&)=delete;
      no_copy_type(double x):d(x) {}
      ~no_copy_type() { std::cout << "destroyed " << d << "\n"; }
    };
    int main() {
      std::map< int, no_copy_type > m;
      m.emplace( std::piecewise_construct,
      	std::forward_as_tuple(1),
      	std::forward_as_tuple(3.14)
      );
      std::cout << "destroy happens next:\n";
    }