Suppose I want to write a generic function void f, which does one thing if T is a POD type and another thing if T is non-PO
I would like tag dispatch because:
It seems tricky to me to add third variant in second example. When you'll want to add, for example non-POD-of-PODs type you'll have to replace bool in template with something other (int if you like =) ) and replace all struct f2 with struct f2. So that for me the second variant looks hardly extensible. Please correct me if I wrong.