C++ User-defined type conversion failure

PENGUINLIONG
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:

  1. static member of class (succeeded);

  2. 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.

doqtor

Member of the class:

struct test
{
    test()
    {
        p_ = Pack<int>(std::bind(&test::foo, *this));
    }

    int foo()
    {
        std::cout << "test::foo" << std::endl;
        return 5;
    }

    Pack<int> p_;
};

int main()
{
    test t;
    int x = t.p_;

    return 0;
}

This works fine on VS 2013 EE.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

c++ User defined conversion - implicit conversion

From Dev

c++ User defined conversion - implicit conversion

From Dev

Implicit conversion from user-defined type to primitive type in C++

From Dev

Implicit conversion from user-defined type to primitive type in C++

From Dev

Implicit conversion from lambda expression to user-defined type

From Dev

Automatic type conversion for user-defined Vector class?

From Dev

No Suitable User Defined Conversion

From Dev

confliction type for a user defined function in c

From Dev

Type conversion failure in Access 2013

From Dev

User defined explicit conversion in conditionals in C++11

From Dev

User defined explicit conversion in conditionals in C++11

From Dev

At most how many user-defined conversion operator can be implicitly applied during an implicit type conversion?

From Dev

At most how many user-defined conversion operator can be implicitly applied during an implicit type conversion?

From Dev

Variadic user defined conversion/constructor

From Dev

Overload resolution and user defined conversion

From Dev

User defined type as reference

From Dev

Compilation failure with simple user-defined literal

From Dev

Type conversion failure in Microsoft Access 2007

From Dev

Why is a templated user-defined conversion operator able to determine its return type?

From Dev

Retrieve schema of User Defined Table Type from C#

From Dev

c++ unordered_map for user defined data type

From Dev

C# auto generate SQL "user-defined table type"

From Dev

how to convert user defined data type to hashset c#

From Dev

How to create user defined type template class object C++

From Dev

Retrieve schema of User Defined Table Type from C#

From Dev

Precedence of user-defined bool conversion

From Dev

Why is this user-defined conversion failing?

From Dev

User-defined conversion function and casting to reference

From Dev

Precedence of user-defined bool conversion

Related Related

  1. 1

    c++ User defined conversion - implicit conversion

  2. 2

    c++ User defined conversion - implicit conversion

  3. 3

    Implicit conversion from user-defined type to primitive type in C++

  4. 4

    Implicit conversion from user-defined type to primitive type in C++

  5. 5

    Implicit conversion from lambda expression to user-defined type

  6. 6

    Automatic type conversion for user-defined Vector class?

  7. 7

    No Suitable User Defined Conversion

  8. 8

    confliction type for a user defined function in c

  9. 9

    Type conversion failure in Access 2013

  10. 10

    User defined explicit conversion in conditionals in C++11

  11. 11

    User defined explicit conversion in conditionals in C++11

  12. 12

    At most how many user-defined conversion operator can be implicitly applied during an implicit type conversion?

  13. 13

    At most how many user-defined conversion operator can be implicitly applied during an implicit type conversion?

  14. 14

    Variadic user defined conversion/constructor

  15. 15

    Overload resolution and user defined conversion

  16. 16

    User defined type as reference

  17. 17

    Compilation failure with simple user-defined literal

  18. 18

    Type conversion failure in Microsoft Access 2007

  19. 19

    Why is a templated user-defined conversion operator able to determine its return type?

  20. 20

    Retrieve schema of User Defined Table Type from C#

  21. 21

    c++ unordered_map for user defined data type

  22. 22

    C# auto generate SQL "user-defined table type"

  23. 23

    how to convert user defined data type to hashset c#

  24. 24

    How to create user defined type template class object C++

  25. 25

    Retrieve schema of User Defined Table Type from C#

  26. 26

    Precedence of user-defined bool conversion

  27. 27

    Why is this user-defined conversion failing?

  28. 28

    User-defined conversion function and casting to reference

  29. 29

    Precedence of user-defined bool conversion

HotTag

Archive