Почему метод template<class T>parameterToString(const std::shared_ptr<T>& value) нельзя вызвать с параметром std::sharedC++

Программы на C++. Форум разработчиков
Anonymous
 Почему метод template<class T>parameterToString(const std::shared_ptr<T>& value) нельзя вызвать с параметром std::shared

Сообщение Anonymous »

Я меняю шаблон генерации генератора OpenAPI, чтобы помочь решить проблему, затрагивающую одного пользователя.
Я наткнулся на то, что вызывает его генерация:

Метод параметраToString(...) имеет множество прототипов и без проблем используется, когда его аргумент имеет примитивный тип.

Но он вызывает ошибку компиляции для своего шаблонного const std: :shared_ptr& value или const boost::optional& value:
Метод объявлен в созданном файле ApiClient.h:

Код: Выделить всё

/*
* ApiClient.h
* This is an API client responsible for stating the HTTP calls
*/
// [...]
class  ApiClient
{
public:
// [...]

static utility::string_t parameterToString(utility::string_t value);
static utility::string_t parameterToString(int32_t value);
static utility::string_t parameterToString(int64_t value);
static utility::string_t parameterToString(float value);
static utility::string_t parameterToString(double value);
static utility::string_t parameterToString(const utility::datetime &value);
static utility::string_t parameterToString(bool value);
template
static utility::string_t parameterToString(const std::vector& value);

template
utility::string_t parameterToString(const boost::optional& value);

template
utility::string_t parameterToString(const boost::optional& value);

template
static utility::string_t parameterToString(const std::shared_ptr& value);

// [...]
};

template
utility::string_t ApiClient::parameterToString(const std::vector& value)
{
utility::stringstream_t ss;

for( size_t i = 0; i < value.size(); i++)
{
if( i > 0) ss 

Подробнее здесь: [url]https://stackoverflow.com/questions/79021121/why-a-templateclass-t-parametertostringconst-stdshared-ptrt-value-metho[/url]

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