#include <vector>

struct notCopyable
{
    notCopyable() = default;
    notCopyable(const notCopyable&) = delete;
    notCopyable& operator = (const notCopyable&) = delete;

    notCopyable(notCopyable&&) = default;
    notCopyable& operator = (notCopyable&&) = default;
};

int main()
{
    std::vector<notCopyable> v;
    notCopyable nc;

    v.push_back(notCopyable{});
    v.emplace_back();
    v.push_back(std::move(nc));
}