
hello, I have a class A that holds a container of objects of type B indexed by int for e.g. Typically, I have a function of A class A { public: const B& getB(int <index> ) const; private: std::map< int, shared_ptr<B> > listOfBs_; }; The implementation of getB could be const B& A::getB(int <index> ) const { //what to do if index not found } A number of solutions I think of: 1. boost::optional<const B&> getB(int <index> ) const { } 2. change signature to const B* getB(int <index> ) const 3. Define a static const B notFoundB; const B& A::getB(int <index> ) const returns notFoundB when not found and have API users compare return value with notFoundB I suppose the cheapest in overhead/performance is 2... optional must have some time overhead? Are there advised solutions? Favourites in terms of style? Regards,