C++ operator() 重载

bla*_*eep 0 c++

有人能解释一下这段代码的作用吗?

struct EnumClass
    {
        template <typename T>
        std::size_t operator()(T t) const
        {
            return static_cast<std::size_t>(t);
        }
    };
Run Code Online (Sandbox Code Playgroud)

Dev*_*lar 6

()为任何类型的对象定义了运算符EnumClass,采用任何类型的一个参数。运算符计算该参数,转换为 type size_t

EnumClass e;
e(1); // evaluates to (size_t)1
Run Code Online (Sandbox Code Playgroud)

当然,这是无稽之谈。(它可能使感在其他一些方面,但单机和-是,它并没有-你并不需要一个EnumClass对象来投的东西size_t。)