Someone asserted on SO today that you should never use unnamed namespaces in header files. Normally this is correct, but I seem to remember once someone told me that one of the standard libraries uses unnamed namespaces in header files to perform some sort of initialization.
Am I remembering correctly? Can someone fill in the details?
The only situation in which a nameless namespace in header can be useful is when you want to distribute code as header files only. For example, a large standalone subset of Boost is purely headers.
The token ignore
for tuples, mentioned in another answer is one example, the _1
, _2
etc. bind placeholders are others.