У меня есть функция ниже (просто для воспроизведения проблемы):
template <typename KeyT>
void func(const KeyT cptr) {
std::cout << typeid(KeyT).name() << std::endl;
}
Я хотел бы назвать это строковым литералом, как показано ниже:
func<char*>("literal");
Но в итоге я получаю предупреждение ниже:
warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wc++11-compat-deprecated-writable-strings]
Мне нужно использовать char* как мой тип ключа, и я ожидал, что TAD рассмотрит param type как const char* в целом, поскольку я не беру его по ссылке.
Предупреждение поставляется с компиляторами clang и g++.
Как выводится param type здесь?
Спасибо заранее.