Как определить обобщение to_string и to_wstring, чтобы избежать дублирования кодаC++

Программы на C++. Форум разработчиков
Anonymous
 Как определить обобщение to_string и to_wstring, чтобы избежать дублирования кода

Сообщение Anonymous »

У меня есть несколько пользовательских классов, для которых я хотел бы определить функцию to_string. Однако вместо того, чтобы определять это только для std::string, я хотел бы определить это для всех возможных экземпляров std::basic_string. Итак, ниже следует наивная попытка сделать это, но она не удалась:
У нас есть несколько типов, и мы определяем функции 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]

Вернуться в «C++»