Информация об изменениях

Сообщение Re[7]: упс... от 10.04.2015 2:15

Изменено 10.04.2015 2:24 bazis1

Здравствуйте, koandrew, Вы писали:

K>На тестовой функции всё работает как должно. При компиляции выдаётся варнинг:

K>
  Скрытый текст
K>

1>Scripting\v8\V8ScriptingEngine.cpp(210): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
1>> Scripting\v8\V8ScriptingEngine.cpp(222) : see reference to function template instantiation 'v8::Local<v8::Value> Invoker<int,bool,int>::DoInvoke<0x00,0x01>(v8::Isolate *,const std::vector<v8::Local<v8::Value>,std::allocator<_Ty>> &,std::_Arg_idx<0x00,0x01>)' being compiled
1>> with
1>> [
1>> _Ty=v8::Local<v8::Value>
1>> ]
1>> Scripting\v8\V8ScriptingEngine.cpp(222) : see reference to function template instantiation 'v8::Local<v8::Value> Invoker<int,bool,int>::DoInvoke<0x00,0x01>(v8::Isolate *,const std::vector<v8::Local<v8::Value>,std::allocator<_Ty>> &,std::_Arg_idx<0x00,0x01>)' being compiled
1>> with
1>> [
1>> _Ty=v8::Local<v8::Value>
1>> ]
1>> Scripting\v8\V8ScriptingEngine.cpp(221) : while compiling class template member function 'v8::Local<v8::Value> Invoker<int,bool,int>::Invoke(v8::Isolate *,const std::vector<v8::Local<v8::Value>,std::allocator<_Ty>> &)'
1>> with
1>> [
1>> _Ty=v8::Local<v8::Value>
1>> ]
1>> Scripting\v8\V8ScriptingEngine.cpp(390) : see reference to class template instantiation 'Invoker<int,bool,int>' being compiled


K>Но с этим, я думаю, как-нить разберусь.
Глюк, судя по-всему, здесь:
template <typename _Ty, size_t _Index> int GetArg(const std::vector<Local<Value>> &variants)

должно быть:
template <typename _Ty, size_t _Index> _Ty GetArg(const std::vector<Local<Value>> &variants)


K>Ещё раз огромное спасибо за помощь и за урок вариадиковедения тоже!

Меня самого любопытство одолело и я решил распотрошить std::bind()
Re[7]: упс...
Здравствуйте, koandrew, Вы писали:

K>На тестовой функции всё работает как должно. При компиляции выдаётся варнинг:

K>
  Скрытый текст
K>

1>Scripting\v8\V8ScriptingEngine.cpp(210): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
1>> Scripting\v8\V8ScriptingEngine.cpp(222) : see reference to function template instantiation 'v8::Local<v8::Value> Invoker<int,bool,int>::DoInvoke<0x00,0x01>(v8::Isolate *,const std::vector<v8::Local<v8::Value>,std::allocator<_Ty>> &,std::_Arg_idx<0x00,0x01>)' being compiled
1>> with
1>> [
1>> _Ty=v8::Local<v8::Value>
1>> ]
1>> Scripting\v8\V8ScriptingEngine.cpp(222) : see reference to function template instantiation 'v8::Local<v8::Value> Invoker<int,bool,int>::DoInvoke<0x00,0x01>(v8::Isolate *,const std::vector<v8::Local<v8::Value>,std::allocator<_Ty>> &,std::_Arg_idx<0x00,0x01>)' being compiled
1>> with
1>> [
1>> _Ty=v8::Local<v8::Value>
1>> ]
1>> Scripting\v8\V8ScriptingEngine.cpp(221) : while compiling class template member function 'v8::Local<v8::Value> Invoker<int,bool,int>::Invoke(v8::Isolate *,const std::vector<v8::Local<v8::Value>,std::allocator<_Ty>> &)'
1>> with
1>> [
1>> _Ty=v8::Local<v8::Value>
1>> ]
1>> Scripting\v8\V8ScriptingEngine.cpp(390) : see reference to class template instantiation 'Invoker<int,bool,int>' being compiled


K>Но с этим, я думаю, как-нить разберусь.
Глюк, судя по-всему, здесь:
template <typename _Ty, size_t _Index> int GetArg(const std::vector<Local<Value>> &variants)

должно быть:
template <typename _Ty, size_t _Index> _Ty GetArg(const std::vector<Local<Value>> &variants)


K>Ещё раз огромное спасибо за помощь и за урок вариадиковедения тоже!

Меня самого любопытство одолело и я решил распотрошить std::bind()
P.S. При желании этот код можно упростить, выкинув:
1. Копирование в промежуточный vector
2. Создание Invokable-объекта. Вместо этого методы можно сделать static и передавать туда явно указатель на вызываемую функцию, которую shim вытащит из info.Data().