LINUX.ORG.RU

с++ static переменная внутри функции.


0

0

void foo(const map<string, string> & aBigTable)
{
static map<string, string> cache_big_table = aBigTable;
/* ... */
}


Что правда что присваивание будет выполнено только один раз, при первом вызове функции, а в последующие не будет ???

Кажись да....
А вот в таком варианте каждый раз будет присваиватся:

void foo(const map<string, string> & aBigTable)
{
static map<string, string> cache_big_table;
cache_big_table = aBigTable;
/* ... */
}

Хитро... Ух ты :)

anonymous

ты чего хотел спросить то?

Reset ★★★★★
()

Вроде так должно быть.

Разница в том, что первое - инициализация, и ее логично проводить один раз, а второе - копирование.

YesSSS ★★★
()

Ты попробуй, работает ли оно. Потому что, ИМХО, это или ошибка времени компиляции, или undefined behaviour.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Ты постил, чтобы продемонстрировать знание стандарта?

tailgunner ★★★★★
()

>Что правда что присваивание будет выполнено только один раз, при первом вызове функции, а в последующие не будет ???

Не присваивание, а обявление. Из этого всё остальное ясно

golodranez ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.