英文:
C++ operator () overloading
问题
这段代码是一个结构体 EnumClass
,它包含了一个模板化的成员函数 operator()
,该函数接受一个参数 T t
,并将其强制转换为 std::size_t
类型后返回。这个结构体似乎用于将不同类型的值转换为 std::size_t
类型的哈希值或索引值。
英文:
Could anybody explain what this code does?
struct EnumClass
{
template <typename T>
std::size_t operator()(T t) const
{
return static_cast<std::size_t>(t);
}
};
答案1
得分: 6
它为类型为EnumClass
的任何对象定义了运算符()
,接受任何类型的一个参数。该运算符的结果为该参数,强制转换为size_t
类型。
EnumClass e;
e(1); // 评估为(size_t)1
当然,这几乎是毫无意义的。(在某些其他上下文中,它可能有某种意义,但独立和原样,它没有意义 - 您不需要一个EnumClass
对象来将某物强制转换为size_t
。)
英文:
It defines the operator ()
for any object of type EnumClass
, taking one argument of any type. The operator evaluates to that argument, cast to type size_t
.
EnumClass e;
e(1); // evaluates to (size_t)1
This is borderline nonsense, of course. (It might make sense in some other context, but stand-alone and as-is, it doesn't -- you don't need an EnumClass
object to cast something to size_t
.)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论