pSet
является ссылкой типа std::set<std::set<T>>
, поэтому *itr
будет ссылкой типа std::set<T>
.Вы пытаетесь использовать перегрузку std::ostream
на <<
для этого типа.Однако стандартный контейнер библиотеки не определяет такую перегрузку.
Если вы хотите распечатать все элементы внутреннего набора, вам необходимо выполнить итерации по нему:
template <typename T>
void writePowerSet(const std::set<std::set<T>>& pSet)
{
for(const auto& s : pSet)
{
for(const auto& x : s)
{
std::cout << x;
}
}
}
Здесь яЯ использую диапазон для цикла, потому что это легче писать и читать.Вывод будет выглядеть не очень хорошо, добавьте дополнительный вывод там, где вы хотите.
Это также предполагает, что перегрузка <<
определена для внутреннего типа T
.