Можно ли сделать универсальный шаблон для разных комбинаций whar_t и char?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 19.01.23 18:21
Оценка:
У меня есть функции, реализации которых нужны для разных комбинаций Unicode и ANSI (Unicode/Unicode, ANSI/ANSI, Unicode/ANSI). Строки ANSI используются только в качестве источников (байт дополняется нулевым старшим). Реализации отличаются только используемыми типами. Напрашивается идея оформить их одним шаблоном, но получается затык с "перекрестными" версиями — обычное присваивание из char в wchar_t расширяет знак, а мне нужно расширять нулем.

Если добавить в список параметров шаблона, кроме типов символов источника/результата, еще и третий промежуточный тип для беззнакового char, компилятор не в состоянии вывести его только по параметрам функции. Даже если делаю отдельную функцию ConvertChar, комбинация параметров шаблона все равно однозначно невыводима из комбинации параметров/результатов функций, хотя остальные комбинации, кроме трех основных, не используются. Но добавлять явные параметры шаблона в вызовы функций нельзя — они должны выглядеть, как обычные функции, вызывающий код ничего не знает про их шаблоны.

Как принято бороться с такими проявлениями противоестественного интеллекта?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.