んなわけで、std::container と cliext::container とはどーも相性が悪い。
そいじゃSystem::Collections::Generic::container と cliext::container はどーでしょう:
void test1() {
Console::WriteLine(" 3: cliext::vector を Generic::List でコンストラクト");
System::Collections::Generic::List<int> netV;
for ( int i = 0; i < 4; ++i ) netV.Add(i);
cliext::vector<int> cliV(%netV);
for ( int i = 0; i < cliV.size(); ++i ) assert(netV[i] == cliV[i]);
}
void test2() {
Console::WriteLine(" 4: Generic::List を cliext::vector でコンストラクト");
cliext::vector<int> cliV;
for ( int i = 0; i < 4; ++i ) cliV.push_back(i);
System::Collections::Generic::List<int> netV(%cliV);
for ( int i = 0; i < cliV.size(); ++i ) assert(netV[i] == cliV[i]);
}
どちらも IEnumerable<T> であり、IEnumerable<T>^ を引数とする
コンストラクタを持ってるので実にすんなりと嫌がりもせずするりと納まってくれます。
してみると、cliext::container は std::container の.NET向けコンパチ/代替品であり、
両者を混在するよな使い方はあんま想定してないように思えますです。