Using namespaces in VTK

For those of you developing code you hope to merge into VTK,

  • do not include using namespace nlohmann in your code.
  • avoid using namespace … in general.
  • however it is OK to use namespaces with string-literal and placeholder operators in them (e.g., using namespace std::literals, using namespace boost::lambda::placeholders).

The issue is C++ promotion rules end up causing ambiguous lookups for any enum comparison operators (particularly in gcc 4.8.5, but using namespace is something to generally avoid anyways)

std::literals is meant to be used that way and isnt going to dump ADL-confusing symbols on you; the same goes for boost::lambda::placeholders or whatever gave _1 and the like for boost::bind.

1 Like