Многие ограничения, наложенные в подмножестве EC ++, были сделаны, чтобы позволить широкую поддержку компилятора для небольших 16- и 32-битных целей в то время, когда не все компиляторы C ++ поддерживали все появляющиеся функции (например, GCC не поддерживал пространства имен до версии 3. x и EC ++ опускает поддержку пространства имен). Это было до стандартизации ISO C ++, и стандартизация любого рода важна для многих встроенных проектов. Таким образом, его цель состояла в том, чтобы способствовать принятию C ++ во встроенных системах до необходимой стандартизации.
Однако его время прошло, и это в значительной степени не имеет значения. В нем есть несколько вещей, которые можно сказать о «дорогих» и «недетерминированных» элементах C ++, которые все еще актуальны, но большая часть этого была нацелена на совместимость.
Обратите внимание, что EC ++ является истинным подмножеством C ++, и что любая программа EC ++ также является допустимой программой C ++. На самом деле это определяется исключительно с точки зрения того, что он пропускает, а не полное определение языка.
Green Hills, IAR и Keil производят компиляторы с переключателями для обеспечения подмножества EC ++, но, поскольку это во многом вопрос переносимости, это совершенно бессмысленно, поскольку все эти компиляторы также поддерживают ISO C ++. По большей части те части спецификации EC ++, которые вы, возможно, захотите придерживаться, можно сделать, просто не используя эти функции в полнофункциональном компиляторе.
Существуют компиляторы C ++ для очень ограниченных систем, которые не являются ни полностью ISO C ++, ни EC ++.