Open nicokruithof opened 12 years ago
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
You could attempt to rename the const specialisation and compile again?
I can't test this under Visual Studio at the moment as I have no windows machine.
The following code compiles fine on linux (gcc), but gives an error on windows (visual studio)
The error is: