I asked the initial question [before](https://stackoverflow.com/questions/23879120/can-i-use-stream-operator-with-bind). Now I have a follow-on question. Here is the code:

```
using namespace std::placeholders;
using namespace std;

struct MyType {};
struct MyType2 {};

ostream& operator<<(ostream &os, const MyType &n)
{
    cout << "MyType" << endl;
    return os;
}

ostream& operator<<(ostream &os, const MyType2 &n)
{
    cout << "MyType2" << endl;
    return os;
}

int main()
{
    std::vector<MyType> vec;
    MyType mt;
    vec.push_back(mt);

    std::for_each(vec.begin(), vec.end(), [](const MyType &mt) {cout << mt;});  // this works
    std::for_each(vec.begin(), vec.end(), std::bind((ostream&(ostream&, const MyType&))::operator<<, std::ref(std::cout), _1));  // this does nothing !

    return 0;
}

```

Do you see why that lambda works while that bind implementation does nothing? It compiles, but does nothing.