Skip to content

More visual studio compiler errors #6

@nicokruithof

Description

@nicokruithof

The following code compiles fine on linux (gcc), but gives an error on windows (visual studio)

class Test
{
public:
    Test()
    {
        std::cout << "Test()" << std::endl;
    }
    void open(const std::string &filename)
    {
        std::cout << "Opening: " << filename << std::endl;
    }
    void close()
    {
        std::cout << "Closing" << std::endl;
    }
};

...
vu8::Class<Test> renderer_class;
renderer_class
            .Set<void (), &Test::close>("close")
            .Set<void (const std::string&), &Test::open>("open");

The error is:

error C2440: 'specialization' : cannot convert from 'void (__thiscall Test::* )(void)' to 'void (__thiscall Test::* const )(const v8::Arguments &)(void)'
  Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
error C2973: 'vu8::Class<T>::Set' : invalid template argument 'void (__thiscall Test::* )(void)'
with
[
  T=Test
]
vu8/Class.hpp(168) : see declaration of 'vu8::Class<T>::Set'
with
[
   T=Test
]
error C2440: 'specialization' : cannot convert from 'void (__thiscall Test::* )(void)' to 'void (__thiscall Test::* const )(void) const'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions