ベクター内のコンストラクターを介して渡される値をコピーしようとしています。コードは次のとおりです。
class Foo {
public:
    template<typename T>
    Foo(T begin, T end)
    {
        std::copy(begin, end, data.begin());        
    }
    void printVector()
    {
        cout << data.size();
    }
protected:
    std::vector<double> data;
};
そしてメイン:
std::vector<double> data = {
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10
};
Foo::Foo f(
    std::begin(data),
    std::begin(data)
);
f.printVector();
誰かがなぜこれがうまくいかないのか説明してもらえますか? また、std::vector<vector<double> > data2D ベクトルがあり、2D ベクトルの反復子を渡した場合、これを 2D ベクトルにコピーすることはできますか?
ありがとう