Conversão int/double para string

Como fazer o metodo addstr aceitar int e double com o uso dos metodos privados a seguir?

class Outstr{
private:
	string out, pr[10], st[10];
	int size, lmax;

	string Str(int n){ // Converte inteiro para string
		ostringstream ostr; // Output string stream
		ostr << n;
		return ostr.str();
	}
	string Str(double x, int d){ // Converte real para string, d decimais
		ostringstream ostr; // Output string stream
		ostr << fixed << setprecision(d) << x;
		return ostr.str();
	}

public:
	Outstr() :out(""), size(0), lmax(0){};
	void addstr(string prompt, string str){
		pr[size] = prompt;
		st[size] = str;
		if (prompt.length()>lmax) lmax = prompt.length();
		size++;
	};

bem, eu não entendo suas necessidades exatas, este código parece fazer o que vc pretendia, mas como não entendi inteiramente a pergunta, espero que a resposta esteja correta.

//OutStr.h
#pragma once

#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
#include <type_traits>

using std::string;
using std::ostringstream;
using std::fixed;
using std::setprecision;
using std::is_arithmetic;
using std::is_integral;
using std::cout;

class Outstr
{
    private:
    string out, pr[10], st[10];
    int size, lmax;

    template<typename V, typename P>
    string Str ( V value, P precision)
    {
        static_assert( is_arithmetic<V> ( ) && is_integral<P> ( ), "apenas numeros" );
        if ( std::is_integral<V>() )
        {
            ostringstream stream;
            stream << value;
            return stream.str ( );
        }
        else
        {
            ostringstream stream;
            stream << fixed << setprecision ( precision ) << value;
            return stream.str ( );
        }
    }

    public:
    Outstr ( ) :out ( "" ), size ( 0 ), lmax ( 0 ) { };

    template <typename PromptT, typename StringT>
    void addstr ( PromptT prompt, StringT str, int precision = 0 )
    {
        string p = Str ( prompt, precision );
        string s = Str ( str, precision );
        addstr ( p, s );
    }

    
    void addstr ( string prompt, string str)
    {
        pr[size] = prompt;
        st[size] = str;
        if ( prompt.length ( ) > lmax )
            lmax = prompt.length ( );
        size++;
    }