Сообщение Re[9]: простой вопрос. неопределенность ? от 19.06.2015 20:10
Изменено 19.06.2015 20:11 watchmaker
Вышеприведённый ответ был не столько про vector, сколько комментарий к этой строчке:
E>>>Ну таки вызовы кучи -- это сайд-эффект жеж.
W>>...отсутствие её в стандарте, то это не так — явное разрешение не выделять память при вычислении new-expression в стандарте есть.
E>А разве vector<int> v(15); — это new-expression?
Нет. Да с аллокатором по умолчанию внутри vector<int> память выделяется прямым вызовом ::operator new, а не опосредованно через new-expression. Что опять же формально разные вещи. Впрочем для умолчательного аллокатора также есть отдельная оговорка, что не каждый вызов allocate обязан приводить к вызову ::operator new.
E>>>Ну таки вызовы кучи -- это сайд-эффект жеж.
W>>...отсутствие её в стандарте, то это не так — явное разрешение не выделять память при вычислении new-expression в стандарте есть.
E>А разве vector<int> v(15); — это new-expression?
Нет. Да с аллокатором по умолчанию внутри vector<int> память выделяется прямым вызовом ::operator new, а не опосредованно через new-expression. Что опять же формально разные вещи. Впрочем для умолчательного аллокатора также есть отдельная оговорка, что не каждый вызов allocate обязан приводить к вызову ::operator new.
Re[9]: простой вопрос. неопределенность ?
Вышеприведённый ответ был не столько про vector, сколько комментарием к этой строчке:
E>>>Ну таки вызовы кучи -- это сайд-эффект жеж.
W>>...отсутствие её в стандарте, то это не так — явное разрешение не выделять память при вычислении new-expression в стандарте есть.
E>А разве vector<int> v(15); — это new-expression?
Нет. Да с аллокатором по умолчанию внутри vector<int> память выделяется прямым вызовом ::operator new, а не опосредованно через new-expression. Что опять же формально разные вещи. Впрочем для умолчательного аллокатора также есть отдельная оговорка, что не каждый вызов allocate обязан приводить к вызову ::operator new.
E>>>Ну таки вызовы кучи -- это сайд-эффект жеж.
W>>...отсутствие её в стандарте, то это не так — явное разрешение не выделять память при вычислении new-expression в стандарте есть.
E>А разве vector<int> v(15); — это new-expression?
Нет. Да с аллокатором по умолчанию внутри vector<int> память выделяется прямым вызовом ::operator new, а не опосредованно через new-expression. Что опять же формально разные вещи. Впрочем для умолчательного аллокатора также есть отдельная оговорка, что не каждый вызов allocate обязан приводить к вызову ::operator new.