Return any type of object from a method

Flaviu_ 1,011 Reputation points
2021-02-17T13:59:24.527+00:00

I have the following code:

struct SResponse
{
 SResponse(bool state, std::any value) : _state(state), _value(value) {}
 bool        _state = false;
 std::any    _value;
};

CSomeClass
{
public:
 SResponse GetResponse();
};

// implementation
SResponse CSomeClass::GetResponse()
{
 std:string message{"Aloha"};
 SResponse res(true, std::make_any<std::string>(message);

 return res;
}

Using code:

CSomeClass some;
std::any result = some.GetResponse();
std::string message{};
try { message = std::any_cast<std::string>(result.second); }
catch (...) {}

In fact, I have returned std::any. But I want to replace this with something else. But what ? As you can see, in std::any I can put anything, but what can I use instead of std::any ? Because std::any take pretty much memory at 64bit apps. Beside that, std::any is available only from c++17, and this could not be used on old code.

C++
C++
A high-level, general-purpose programming language, created as an extension of the C programming language, that has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation.
3,780 questions
{count} votes

1 answer

Sort by: Most helpful
  1. Guido Franzke 2,186 Reputation points
    2021-02-17T14:17:59.953+00:00

    Hello,
    what is the benefit of this code?
    I suggest you should use templates instead. templates

    Regards, Guido


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.