Conversión de tipo implícito con plantilla

Tengo una plantillaclass A

template <unsigned int m>
class A
{
public:
    A(int) {}
};

Which tiene un constructor deint. Y tengo una operación:

template<unsigned int m>
A<m> operator+(const A<m>&, const A<m>&)
{
    return A<m>(0);
}

Pero cuando llamo:

A<3> a(4);
A<3> b = a + 5;
A<3> c = 5 + a;

Me gustaríaint se convertirá implícitamente en A, pero los compiladores arrojan un error.

¿Hay alguna forma elegante de permitir la conversión implícita sin utilizar soluciones como:

a + A<m>(5)operator+<3>(a, 5)

Respuestas a la pregunta(8)

Su respuesta a la pregunta