Тип 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 здесь.