たとえば、なぜ STL 実装のほとんどのメンバーに_M_
または_
または__
プレフィックスが付いているのでしょうか? なぜ定型コードがこんなに多いのでしょうか?
C++ には、ベクトル (たとえば) の実装をより明確かつ簡潔にするために欠けている機能は何ですか?
ベストアンサー1
実装では、ユーザー定義のマクロとの競合を避けるために、アンダースコアで始まり、大文字または 2 つのアンダースコアが続く名前を使用します。このような名前は C++ で予約されています。たとえば、 というマクロを定義してType
から とすることができます。実装が をテンプレート パラメータ名として使用する#include <vector>
と、問題が発生します。ただし、 というマクロ(またはなど) を定義することはできません。したがって、このような名前は安全に使用できます。vector
Type
_Type
__type
type__
vector