Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, algol, Вы писали:
A>>Так я все-таки не пойму, в чем заключается выпендреж. Если кто-то из разработчиков не понимает конструкции *src++, то это именно его нужно бить по голове резиновой дубинкой.
Д>Объясняю, за что надо бить.
Д>1. Это copy-paste распространенной реализации паттерна копирования
Вот на вскидку тоже самое без copy&paste — на все случаи программирования.
template<typename T>
bool IsTerm(T val);
template<class OutIt, class InIt>
inline void CopyTerm(OutIt dest, InIt src)
{
while(!IsTerm(*dest++ = *src++));
}
inline bool IsTerm(char c)
{
return !c;
}
Д>2. Этот код крайне небезопасен. Напоминаю — в точности такой же кусок кода обошелся MS в миллионы долларов убытков, не говоря уже о потере репутации.
MS-у, вероятно, обошёлся в миллионы долларов не сам код, а то, что где-то было реализовано неправомерное предположение о допустимости отсутствия контроля длины передаваемых данных.
<< Под музыку: Аквариум — Из Калинина В Тверь >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!