Кодт:
К>Ещё раз, внимательно.
К>1. Пусть CRT содержит, например, скомпилированные методы специализации basic_string<char> и, соответственно, allocator<char>. К>2. Пусть эти методы используют buf_ = new char[N]; / delete[] buf_; К>3. Пусть пользователь переписал ::operator new[] и ::operator delete[]
К>Вопрос: как CRT узнает о том, что эти операторы переписаны, если оно уже скомпилировано и слинковано в crt.dll ? К>Эрго, К>- либо оно будет использовать свои, непереписанные, версии этих операторов (нарушаем ODR, э?)
А при чём здесь ODR? ODR применимо только к программе, написанной пользователем, а CRT, являющаяся частью реализации, сюда никаким боком не относится. Если в _пользовательском_ коде будет вызываться неправильный operator new, operator new[] и т.д. (при использовании того же basic_string<char>, например), то нарушение требований стандарта может быть, но лишь по части observable behavior.