В дополнение к тому, что уже было сказано, нужно сказать, что оптимистическая блокировка имеет тенденцию улучшать параллелизм за счет предсказуемости. Пессимистическая блокировка имеет тенденцию уменьшать параллелизм, но более предсказуема.
Вы платите свои деньги, и т.д.
Они являются частью стандарта C ++, см., Например, этот ответ StackOverflow (в котором цитируются соответствующие части стандарта).
Другой ответ на тот же вопрос упоминает, как сделать обратное: заставить их работать в MSVC.
Чтобы отключить их в GCC, используйте -fno-operator-names
. Обратите внимание, что, поступая так, вы фактически переключаетесь на нестандартный диалект C ++, и есть риск того, что вы в конечном итоге напишете код, который может некорректно компилироваться на стандартных компиляторах (например, если вы объявляете переменная с именем, которое обычно зарезервировано).
-pedantic-errors
могут помочь в этом, среди других гнуизмов.
Имейте вы рассматривали какие-нибудь инструменты анализа кода? Что-то похожее на FxCop? С FxCop вы можете написать свои собственные правила (отметьте &&), и вы можете настроить его на выполнение на этапе предварительной компиляции.
Слова являются стандартными для C ++ без включения какого-либо заголовка.
Слова являются стандартными для C, если вы включаете заголовок
.
MSVC не оказывает вам никакой услуги, не поддерживая стандарты.
Однако вы можете использовать инструменты для принудительного отказа от использования ключевых слов. И это может быть руководство по кодированию, и вы можете быстро научить свою команду не делать глупых ошибок переносимости. Избежать проблемы не так уж и сложно.