Code:
// In my header file
class Source
{
	// Whatever
};


class FileSource : public Source
{
	// Whatever
};


void SomeFunc(vector<boost::shared_ptr<FileSource>>& array);
Code:
// In my source file
void SomeOtherFunc()
{
	typedef vector<boost::shared_ptr<Source>> Sources;

	// Do something to populate the Sources array (assume
	// that it actually gets populated with FileSource* )

	// Now pass it to SomeFunc
	SomeFunc(Sources);
}
Sources actually gets populated with FileSource*

SomeFunc() is expecting a vector of FileSource*

So how do I call it with an array of Source*? Simple casting doesn't seem to work here but I guess there must be some way around it...