// // Copyright (c) 2012-2020 Kris Jusiak (kris at jusiak dot net) // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // #include struct I { virtual ~I() noexcept = default; virtual void dummy() = 0; }; struct Impl : I { INJECT(Impl()) {} void dummy() override {} }; fruit::Component module() { return fruit::createComponent(); //.bind(); } int main() { fruit::Injector injector{module()}; std::unique_ptr object{injector.get()}; object->dummy(); } // clang-format off /** * In file included from fruit.cpp:1: * In file included from .fruit/include/fruit/fruit.h:25: * fruit/include/fruit/impl/injection_errors.h:33:3: error: static_assert failed * "No explicit binding nor C::Inject definition was found for T." * static_assert(AlwaysFalse::value, * ^ ~~~~~~~~~~~~~~~~~~~~~ * fruit/include/fruit/impl/component.defn.h:41:9: note: in instantiation of * 'fruit::impl::NoBindingFoundError' requested here * (void)typename fruit::impl::meta::CheckIfError::type(); * ^ * fruit.cpp:6:12: note: in instantiation of function template specialization * 'fruit::Component::Component< * fruit::impl::meta::ConsComp< * fruit::impl::meta::Vector<>*, * fruit::impl::meta::Vector<>, * fruit::impl::meta::Vector<>, * fruit::impl::meta::Vector<>, * fruit::impl::meta::Vector<> * >*>' requested here * return fruit::createComponent(); */ // clang-format on