Можно ли определить пользовательский оператор преобразования строкового литерала, чтобы тип его результата зависел от значения его ввода строки?
Это легко с пользовательскими целыми числами и литералами с плавающей запятой, поскольку они допускают литеральные шаблоны операторов, а фактические символы литерала передаются ему как аргументы шаблона. Пример:
template <char... s> struct silly { using type = int; };
template <char... s> struct silly<'1', s...> { using type = double; };
template <char... s>
typename silly<s...>::type operator"" _silly() { return 0; }
static_assert(std::is_same<int, decltype(4321_silly)>::value, "no luck");
static_assert(std::is_same<double, decltype(1234_silly)>::value, "no luck");
Нет такой вещи, которая существует для пользовательских строковых литералов.
Есть ли другой способ сделать это, либо в текущем стандарте, либо запланирован/обсужден для какой-либо будущей редакции?