Просто объявите его как const
, например:
const std::list<int> constList = { 1, 2, 3 };
Методы типа constList.begin();
вернут const_iterator
, а вызовы типа constList.push_back(3);
не будут компилироваться.
Присвоение его адреса неконстантному указателю не будет работать:
std::list<int> *l = &constList; // does not compile
Передача ссылки на функцию, которая принимает неконстантную ссылку, не работает:
void a(std::list<int> &list) {}
int main()
{
const std::list<int> mylist = { 1, 2, 3 };
a(mylist); // does not compile
}
Не изменять список не является решением.
Создайте неконстантный список, и как только вы закончите его создание, переместите его в список const
:
std::list<int> mylist = { 1, 2, 3 };
mylist.push_back(4);
const std::list<int> constList = std::move(mylist);