#include <iostream>
#include <vector>
#include <type_traits>
#include <utility>
using namespace std;
template <typename Func, typename... Args>
void proxy(Func f, Args&&... args) {
    f(std::forward<Args>(args)...);
}
void real_func(vector<int> v) {
    cout << "size: " << v.size() << endl;
}
void multicast_func(vector<int> v) {
    proxy(real_func, std::forward<vector<int>>(v));
    proxy(real_func, std::forward<vector<int>>(v));
}
int main()
{
    vector<int> ints = {1, 2, 3};
    multicast_func(ints);
    return 0;
}
and the output is:
size: 3
size: 0
why isn't it 3, 3? at what point does this lvalue become an rvalue and gets moved-from?
 
Aucun commentaire:
Enregistrer un commentaire