template<typename T>
class Pack
{
private:
    std::function<T()> _Func = nullptr;
public:
    Pack()
    {
    }
    Pack(std::function<T()> func)
        : _Func(func)
    {
    }
    ~Pack()
    {
    }
    operator T()
    {
        return _Func();
    }
};
What I use is operator T, I want to call _Func implicitly but I cannot even do it explicitly. It seems right but actually error C2440 @MSVC. I use it in two ways:
- static member of class (succeeded); 
- member of class (failed) 
(I don't know whether it matters or not)
I'm really wondering why it performs in two ways, and more importantly, how I can put it into my class as a non-static member and successfully call the operator T.
 
    