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 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.