Well there's not much (if any) difference in the working of this compared to the static_case and == for strings quite likely just calls strcmp() on the c_str() parts again so casting to string is likely to be a waste of resources
And creating a temporary std::string on which you call c_str() is less waste of resources?
Very likely, the direct operator== comparison is as fast or even faster than the comparision of c-strings. For example, if the strings have different length, the evaluation can be done in O(1). On the contrary, strcmp() requires O(n) in every case. Besides, it is possible that a c_str() call implies additional operations like adding a null termination (std::string isn't required to store a null-terminated c-string).