using PlaylistChooserFactory = function<unique_ptr<PlaylistChooser>(QWidget *)>;
Component<PlaylistChooserFactory> getPlaylistChooserDialogComponent() {
return createComponent()
.bind<PlaylistChooser, ChoosePlaylistDialog>()
.install(getSupportRegistryComponent());
}
In file included from /Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/ui/chooseplaylistsdialog.cpp:6:
In file included from /Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/fruit.h:28:
In file included from /Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/component.h:27:
/Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component_functors.defn.h:732:29: error: call to implicitly-deleted copy constructor of 'ChoosePlaylistDialog'
NakedC* c = new NakedC(fun(args...));
^ ~~~~~~~~~~~~
/Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component_functors.defn.h:90:13: note: in instantiation of member function 'fruit::impl::meta::AutoRegisterFactoryHelper::apply<fruit::impl::meta::Comp<fruit::impl::meta::Vector<>, fruit::impl::meta::Vector<fruit::impl::meta::Type<SupportRegistry> >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<SupportRegistry>, fruit::impl::meta::Vector<> > >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<PlaylistChooser>, fruit::impl::meta::Type<ChoosePlaylistDialog> > >, fruit::impl::meta::EmptyList>, fruit::impl::meta::Vector<>, fruit::impl::meta::None, fruit::impl::meta::Bool<false>, fruit::impl::meta::Bool<false>, fruit::impl::meta::Type<std::__1::unique_ptr<ChoosePlaylistDialog, std::__1::default_delete<ChoosePlaylistDialog> > >, fruit::impl::meta::Type<std::__1::unique_ptr<ChoosePlaylistDialog, std::__1::default_delete<ChoosePlaylistDialog> > (QWidget *)>, fruit::impl::meta::Type<QWidget *> >::Op::operator()' requested here
Eval<Op2>()(storage);
^
/Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component_functors.defn.h:89:13: note: in instantiation of member function 'fruit::impl::meta::Compose2ComponentFunctors::apply<fruit::impl::meta::ComponentFunctorIdentity, fruit::impl::meta::ComponentFunctor::apply<fruit::impl::meta::EnsureProvidedType, fruit::impl::meta::Vector<>, fruit::impl::meta::Type<std::__1::function<std::__1::unique_ptr<ChoosePlaylistDialog, std::__1::default_delete<ChoosePlaylistDialog> > (QWidget *)> > >::type>::type::apply<fruit::impl::meta::Comp<fruit::impl::meta::Vector<>, fruit::impl::meta::Vector<fruit::impl::meta::Type<SupportRegistry> >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<SupportRegistry>, fruit::impl::meta::Vector<> > >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<PlaylistChooser>, fruit::impl::meta::Type<ChoosePlaylistDialog> > >, fruit::impl::meta::EmptyList> >::Op::operator()' requested here
Eval<Op1>()(storage);
^
/Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component_functors.defn.h:89:13: note: in instantiation of member function 'fruit::impl::meta::Compose2ComponentFunctors::apply<fruit::impl::meta::Compose2ComponentFunctors::apply<fruit::impl::meta::ComponentFunctorIdentity, fruit::impl::meta::ComponentFunctor::apply<fruit::impl::meta::EnsureProvidedType, fruit::impl::meta::Vector<>, fruit::impl::meta::Type<std::__1::function<std::__1::unique_ptr<ChoosePlaylistDialog, std::__1::default_delete<ChoosePlaylistDialog> > (QWidget *)> > >::type>::type, fruit::impl::meta::ComponentFunctor::apply<fruit::impl::meta::PreProcessRegisterProvider, fruit::impl::meta::Type<std::__1::function<std::__1::unique_ptr<PlaylistChooser, std::__1::default_delete<PlaylistChooser> > (QWidget *)> (std::__1::function<std::__1::unique_ptr<ChoosePlaylistDialog, std::__1::default_delete<ChoosePlaylistDialog> > (QWidget *)> &)>, fruit::impl::meta::Type<(lambda at /Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component_functors.defn.h:687:27)> >::type>::type::apply<fruit::impl::meta::Comp<fruit::impl::meta::Vector<>, fruit::impl::meta::Vector<fruit::impl::meta::Type<SupportRegistry> >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<SupportRegistry>, fruit::impl::meta::Vector<> > >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<PlaylistChooser>, fruit::impl::meta::Type<ChoosePlaylistDialog> > >, fruit::impl::meta::EmptyList> >::Op::operator()' requested here
/Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component_functors.defn.h:698:11: note: in instantiation of member function 'fruit::impl::meta::Compose2ComponentFunctors::apply<fruit::impl::meta::Compose2ComponentFunctors::apply<fruit::impl::meta::Compose2ComponentFunctors::apply<fruit::impl::meta::ComponentFunctorIdentity, fruit::impl::meta::ComponentFunctor::apply<fruit::impl::meta::EnsureProvidedType, fruit::impl::meta::Vector<>, fruit::impl::meta::Type<std::__1::function<std::__1::unique_ptr<ChoosePlaylistDialog, std::__1::default_delete<ChoosePlaylistDialog> > (QWidget *)> > >::type>::type, fruit::impl::meta::ComponentFunctor::apply<fruit::impl::meta::PreProcessRegisterProvider, fruit::impl::meta::Type<std::__1::function<std::__1::unique_ptr<PlaylistChooser, std::__1::default_delete<PlaylistChooser> > (QWidget *)> (std::__1::function<std::__1::unique_ptr<ChoosePlaylistDialog, std::__1::default_delete<ChoosePlaylistDialog> > (QWidget *)> &)>, fruit::impl::meta::Type<(lambda at /Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component_functors.defn.h:687:27)> >::type>::type, fruit::impl::meta::ComponentFunctor::apply<fruit::impl::meta::PostProcessRegisterProvider, fruit::impl::meta::Type<std::__1::function<std::__1::unique_ptr<PlaylistChooser, std::__1::default_delete<PlaylistChooser> > (QWidget *)> (std::__1::function<std::__1::unique_ptr<ChoosePlaylistDialog, std::__1::default_delete<ChoosePlaylistDialog> > (QWidget *)> &)>, fruit::impl::meta::Type<(lambda at /Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component_functors.defn.h:687:27)> >::type>::type::apply<fruit::impl::meta::Comp<fruit::impl::meta::Vector<>, fruit::impl::meta::Vector<fruit::impl::meta::Type<SupportRegistry> >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<SupportRegistry>, fruit::impl::meta::Vector<> > >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<PlaylistChooser>, fruit::impl::meta::Type<ChoosePlaylistDialog> > >, fruit::impl::meta::EmptyList> >::Op::operator()' requested here
Eval<RealOp>()(storage);
^
/Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component_functors.defn.h:89:13: note: in instantiation of member function 'fruit::impl::meta::AutoRegisterFactoryHelper::apply<fruit::impl::meta::Comp<fruit::impl::meta::Vector<>, fruit::impl::meta::Vector<fruit::impl::meta::Type<SupportRegistry> >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<SupportRegistry>, fruit::impl::meta::Vector<> > >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<PlaylistChooser>, fruit::impl::meta::Type<ChoosePlaylistDialog> > >, fruit::impl::meta::EmptyList>, fruit::impl::meta::Vector<>, fruit::impl::meta::Type<ChoosePlaylistDialog>, fruit::impl::meta::Bool<false>, fruit::impl::meta::Bool<true>, fruit::impl::meta::Type<std::__1::unique_ptr<PlaylistChooser, std::__1::default_delete<PlaylistChooser> > >, fruit::impl::meta::Type<std::__1::unique_ptr<PlaylistChooser, std::__1::default_delete<PlaylistChooser> > (QWidget *)>, fruit::impl::meta::Type<QWidget *> >::Op::operator()' requested here
Eval<Op1>()(storage);
^
/Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component_functors.defn.h:90:13: note: in instantiation of member function 'fruit::impl::meta::Compose2ComponentFunctors::apply<fruit::impl::meta::ComponentFunctor::apply<fruit::impl::meta::EnsureProvidedType, fruit::impl::meta::Vector<>, fruit::impl::meta::Type<std::__1::function<std::__1::unique_ptr<PlaylistChooser, std::__1::default_delete<PlaylistChooser> > (QWidget *)> > >::type, fruit::impl::meta::ComponentFunctorIdentity>::type::apply<fruit::impl::meta::Comp<fruit::impl::meta::Vector<>, fruit::impl::meta::Vector<fruit::impl::meta::Type<SupportRegistry> >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<SupportRegistry>, fruit::impl::meta::Vector<> > >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<PlaylistChooser>, fruit::impl::meta::Type<ChoosePlaylistDialog> > >, fruit::impl::meta::EmptyList> >::Op::operator()' requested here
Eval<Op2>()(storage);
^
/Users/mohmed/QtCreatorProjects/UltraSync/ultrasync/../../../Build/fruit/include/fruit/impl/component.defn.h:64:3: note: in instantiation of member function 'fruit::impl::meta::Compose2ComponentFunctors::apply<fruit::impl::meta::Compose2ComponentFunctors::apply<fruit::impl::meta::Compose2ComponentFunctors::apply<fruit::impl::meta::ComponentFunctor::apply<fruit::impl::meta::AddDeferredInterfaceBinding, fruit::impl::meta::Type<PlaylistChooser>, fruit::impl::meta::Type<ChoosePlaylistDialog> >::type, fruit::impl::meta::ComponentFunctor::apply<fruit::impl::meta::InstallComponentHelper, fruit::impl::meta::Type<SupportRegistry> >::type>::type, fruit::impl::meta::ProcessDeferredBindings>::type, fruit::impl::meta::ComponentFunctor::apply<fruit::impl::meta::ConvertComponent, fruit::impl::meta::Comp<fruit::impl::meta::Vector<>, fruit::impl::meta::Vector<fruit::impl::meta::Type<std::__1::function<std::__1::unique_ptr<PlaylistChooser, std::__1::default_delete<PlaylistChooser> > (QWidget *)> > >, fruit::impl::meta::Vector<fruit::impl::meta::Pair<fruit::impl::meta::Type<std::__1::function<std::__1::unique_ptr<PlaylistChooser, std::__1::default_delete<PlaylistChooser> > (QWidget *)> >, fruit::impl::meta::Vector<> > >, fruit::impl::meta::Vector<>, fruit::impl::meta::EmptyList> >::type>::type::apply<fruit::impl::meta::Comp<fruit::impl::meta::Vector<>, fruit::impl::meta::Vector<>, fruit::impl::meta::Vector<>, fruit::impl::meta::Vector<>, fruit::impl::meta::EmptyList> >::Op::operator()' requested here
Op()(storage);
^
Why is it trying to copy the object while the factory should be returning a pointer, not an instance?
At least according to the factory so to speak.