Тип vector<char *>
не конвертируется в const vector<const char*>
. Например, следующее приводит к ошибке компиляции:
#include <vector>
using namespace std;
void fn(const vector<const char*> cvcc)
{
}
int main()
{
vector<char *> vc = vector<char *>();
fn(vc);
}
Я понимаю, почему vector<char*>
не может быть преобразован в vector<const char*>
- дополнительные элементы типа const char *
могут быть добавлены к вектору, а затем они будут доступны как неконстантные. Однако, если сам вектор const, это не может произойти.
Моя лучшая догадка заключается в том, что это было бы безобидно, но компилятор не может сделать вывод, что это было бы безвредно.
Как это можно обойти?
Этот вопрос был предложен С++ FQA здесь.