我尝试搜索std :: ignore的可能实现,但未能找到明确的答案。
http://mail-archives.apache.org/mod_mbox/stdcxx-dev/200807.mbox/%3C4872AA41.7040005@roguewave.com%3E引用c ++规范的问题,并提供和说明性实现
namespace std {
struct _Ignore
{
template <class _Type>
_Ignore& operator= (const _Type& value) { return *this; }
};
const _Ignore ignore = _Ignore ();
} // namespace std
还有关于这些问题的进一步讨论。那么,当前的实现如何?为什么?
答案 0 :(得分:1)
在GCC中,它看起来像您发布的内容,但ignore
不是const
。这就克服了你所链接的主题中的主要异议。
在Clang中,赋值运算符是const,并且还返回const,整个类本身就是一个模板(除了赋值运算符是模板)。无论出于何种原因,模板实例化都使用unsigned char
。