void foo(std::pair<int, std::vector<std::unique_ptr<int>>>&&) {}
foo({{}, {}});
The above does not compile with an error message reporting that it attempts to call into the copy constructor of std::vector<std::unique_ptr<int>> (which is deleted). However, the following works
void foo(std::vector<std::unique_ptr<int>>&&) {}
void foo(const std::vector<std::unique_ptr<int>>&) {}
foo({});
What rules am I missing that make the second example work and the first example not work?