Лично я бы предпочел не верить, что все действительно перейдут к ожидаемой дате. Даже если я уверен, что это произойдет, я не хочу создавать дополнительную работу для кого-либо или прекращать их работу, если я ошибаюсь.
Если ничего другого, сборки должны быть воспроизводимыми. Что если в декабре вы поймете, что вам нужно воспроизвести сборку с октября? Вы не можете (по крайней мере, не без включения часов на сборочной машине), потому что он больше не будет компилироваться.
Итак, я бы сделал это:
support2005.h
-------------
// empty file
source file
-----------
#include "support2005.h"
#if _MSC_VER >= 1600
// clean version of the source code
#else
// less clean version
// of the source code
// requiring multiple lines of code
// and requiring some dirty static_casts
#endif
Как только у всех будет VS 2010, измените support2005.h на #error "Remove Visual Studio 2005 compatibility code from this file"
.
На самом деле я лично не проверял бы это изменение, поскольку оно не позволит никому выполнять какую-либо работу до тех пор, пока не будет удалена поддержка VS 2005. Является ли удаление мертвого кода действительно первоочередной задачей для вашей компании утром 1 ноября? И для этого нужны все руки на палубе? Скорее, я бы проверил, удалил файл, выполнил полную сборку, продолжал удалять код совместимости, пока все снова не собралось, и проверил все это как "удалить поддержку VS 2005".
Вы говорите, что волнуетесь, что можете забыть, но если так, то что? Мертвый код никому не вредит. Вы запомните это в следующий раз, когда вы посмотрите на любой из этих файлов, или в следующий раз, когда вы увидите «support2005.h» в списке файлов, графике зависимостей заголовка и т. Д. Так что это не «делает исходный код нечитаемым в долгосрочной перспективе» ", потому что в течение долгого времени любой, кто видит это, может просто проигнорировать или удалить это. Если у вас есть какое-либо программное обеспечение для отслеживания проблем, вы можете найти первую веху, намеченную после 2010-11-01, и прикрепить к ней задачу «удалить поддержку VS 2005 и избавиться от support2005.h» с примечанием. что это в настоящее время заблокировано разработчиками, все еще использующими VS 2005.
Если вы действительно хотите, чтобы 2010-11-01 были жестким крайним сроком, после которого код нарушается, просто оставайтесь до полуночи на Хэллоуин и проверьте внесенные изменения. Это на самом деле не нарушает код, как вы просили, но он нарушает любого, кто обновляется от контроля версий, и, следовательно, предположительно, это нарушает сборку. Самое главное, что он очень легко обратим или может быть подавлен локально, если выясняется, что кто-то может прекратить работу.