add more directives to support pre c++11