У нас есть несколько типов, и мы определяем функции to_basic_string() для каждого из них. Затем у нас есть более конкретные to_string(), to_wstring(), to_u8string(), которые оборачивают to_basic_string() для каждой базовой_строки экземпляры. Используется общий аргумент, поэтому нам не нужно определять одно и то же для каждого пользовательского типа.
Код: Выделить всё
#include
#include
#include
using namespace std::literals;
// Define the types...
template
struct foo {};
struct bar {};
struct baz {};
// ...
// Define the generic to_basic_string functions...
template
std::basic_string to_basic_string(foo arg)
{
std::basic_stringstream stst;
stst
Подробнее здесь: [url]https://stackoverflow.com/questions/79029142/how-to-define-a-generalisation-to-string-and-to-wstring-to-avoid-code-duplicatio[/url]