>>888
メンバへのポインタを使ってみた。
typedef std::list<Hoge> HogeList;

template<typename T>
void func(const HogeList& list_hoge, T* Hoge::*member) {
    for (HogeList::const_iterator it = list_hoge.begin(); it != list_hoge.end(); ++it) {
        const T& foo = *(*it.*member);
        std::cout << foo.a << foo.b << foo.c << std::endl;
    }
}

int main(){
    const std::size_t N = 3;
    B a[N] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9},
    };
    Hoge hoge[N];
    for (int i = 0; i < N; ++i)
        hoge[i].pb = &a[i];
    HogeList ls(hoge, hoge + N);
    func(ls, &Hoge::pb);
}