Storing and retrieving objects of unknown type without casts
===

Given:

Object of class A contains an array of objects. 

Each of these objects must implement some interface IB, because A use methods of IB. 

These objects are passed to object of class A by client, and they are of type C or its children. A must return these objects back to clients.

Problem: A must not know anything about C, only about IB, but A must return C.

Is there any standard solution in C++ without unsafe casts<>?