Можно ли передать строковый литерал в функцию, принимающую const char *?
Да.
Пример:
void foo(const char*);
foo("two"); // works
Вы связались и цитировали документацию определяемых пользователем строковых литералов . Пользовательские строковые литералы - это отдельная вещь из строковых литералов .
, но в последней строке этого кода из cppeference для пользовательских строковых литералов этоговорит, что не существует литерального оператора для «два».
Исправление: в этом примере пользовательский строковый литерал для _w
отсутствует."two"
является строковым литералом."two"_w
является определяемым пользователем строковым литералом, но поскольку в примере нет объявления для T operator "" _w(const char*, size_t)
, это ошибка.
Почему, если строковый литерал "два" может бытьпередается в функцию, принимая const char *?
Может ли "two"
быть передана в функцию, принимая const char*
, полностью независимо от того, был ли определен пользовательский строковый литерал.