次のような設定があるとします。
std::locale::global(std::locale("en_US.UTF8"));
stream.imbue(std::locale());
を使用してファセットのインスタンスのメソッドを呼び出そうとすると、std::use_facet
その派生クラスのファセット (つまり、"byname" ファセット) のメソッドが実際に呼び出されますか? たとえば、次のようにします。
std::use_facet<std::ctype<char>>(stream.getloc()).is( /*... */ );
これと概念的に同等のことを行います。
std::ctype_byname<char>("C").is( /* ... */ );
これは、一部の派生クラス ファセット (この場合std::ctype_byname
は ) が基本クラスの仮想関数を実装しているためです。これを仮定するのは正しいですか?