У меня есть функция ниже (просто для воспроизведения проблемы):
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
здесь?
Спасибо заранее.