c++ - Pass non-const vector<string> to a function that takes a reference to const vector<const string>? -
i have function want able accept const vector<const string> want user able pass vector<string> well. thought make function argument reference const , non-const vector still accepted, it's not. here's example:
void test(const vector<const string> &v) { return; } int main( int argc, char *argv[] ) { vector<string> v; test(v); return 0; } the error receive is:
error c2664: 'test' : cannot convert parameter 1 'std::vector<_ty>' 'const std::vector<_ty> &'
why doesn't example work , how suggest make function work user can pass const vector<const string> , vector<string>? thanks
this post maybe can you. can force call in (horrible) way
test(*reinterpret_cast<vector<const string>*>(&v)); that in way illustrates why not possible automatic conversion. break container's rules:
vector<string> v = {"a", "b"}; vector<const string>& vc = v; //not allowed, of course v[0].clear(); //<-- vc[0] cleared
Comments
Post a Comment