felipealmeida pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=44c0199f4213a1b600569674ff3d6bc3d9395704
commit 44c0199f4213a1b600569674ff3d6bc3d9395704 Author: Felipe Magno de Almeida <fel...@expertisesolutions.com.br> Date: Thu Sep 14 15:06:10 2017 -0300 eolian-cxx: Fix instantiate constructor with lambda after disambiguation patch --- src/lib/eolian_cxx/grammar/class_definition.hpp | 2 +- src/tests/eolian_cxx/eolian_cxx_test_binding.cc | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lib/eolian_cxx/grammar/class_definition.hpp b/src/lib/eolian_cxx/grammar/class_definition.hpp index 2e53b6e6a7..71808a3a48 100644 --- a/src/lib/eolian_cxx/grammar/class_definition.hpp +++ b/src/lib/eolian_cxx/grammar/class_definition.hpp @@ -73,7 +73,7 @@ struct class_definition_generator << scope_tab << "{\n" << scope_tab << scope_tab << "::efl::eolian::do_eo_add( ::efl::eo::concrete::_eo_raw, ::efl::eo::concrete{nullptr}, _eo_class(), f);\n" << scope_tab << "}\n" - << scope_tab << "template <typename F> " << string << "( ::efl::eo::instantiate_t, ::efl::eo::concrete parent, F f, typename ::std::enable_if< ::efl::eolian::is_callable<F>::value>::type* = 0)\n" + << scope_tab << "template <typename T, typename F> " << string << "( ::efl::eo::instantiate_t, T&& parent, F f, typename ::std::enable_if< ::efl::eolian::is_callable<F>::value && ::efl::eo::is_eolian_object<T>::value>::type* = 0)\n" << scope_tab << "{\n" << scope_tab << scope_tab << "::efl::eolian::do_eo_add( ::efl::eo::concrete::_eo_raw, parent, _eo_class(), f);\n" << scope_tab << "}\n" diff --git a/src/tests/eolian_cxx/eolian_cxx_test_binding.cc b/src/tests/eolian_cxx/eolian_cxx_test_binding.cc index 489a308493..90f880e319 100644 --- a/src/tests/eolian_cxx/eolian_cxx_test_binding.cc +++ b/src/tests/eolian_cxx/eolian_cxx_test_binding.cc @@ -44,6 +44,17 @@ START_TEST(eolian_cxx_test_binding_constructor_all_optionals) } ); + nonamespace::Generic g2 + (efl::eo::instantiate, g, + [&] + { + g.required_ctor_a(2); + g.required_ctor_b(4); + g.optional_ctor_a(3); + g.optional_ctor_b(5); + } + ); + fail_if(2 != g.req_ctor_a_value_get()); fail_if(3 != g.opt_ctor_a_value_get()); fail_if(4 != g.req_ctor_b_value_get()); --