这是gcc的错误吗?
不.析构函数std::codecvt
受到保护.见[locale.codecvt](标准草案):
templateclass codecvt : public locale::facet, public codecvt_base { // ... protected: ~codecvt(); };
显然,其他实现已选择提升公众的可见性,但标准并不要求这样做.
另见LWG问题721(决定为非缺陷).
这是小平面原始设计的一个令人遗憾的结果.
缺陷报告还有一个如何构造此类对象的示例:
templatestruct codecvt : std::codecvt { ~codecvt() { } } ... std::wstring_convert >;