Не думаю, что это редкая проблема
Это не редкая проблема. Решение уже не за горами:
template <typename T>
void Func2(const std::vector<T*>& Athings) {}
Конечно, это, вероятно, не то, что вы искали, но самое близкое совпадение. Смешивание полиморфизма во время компиляции (шаблоны, перегрузка) и полиморфизма во время выполнения (переопределение функций и наследование классов) плохо сочетается.
Если вышесказанное неприемлемо в вашем случае, лучше всего скопировать весь вектор.