In my class I have a member:
std::vector<std::string> memory_;
Now I'd like to have a fnc returning what's in the memory's first element but I do not want to specify std::string
as a return type in case later I decide to use different type for this purpose so I've tried this but it doesn't work:
typename decltype(memory_)::value_type call_mem()
{
return memory_[0];
}
Any ideas how to specify return type in the most generic way?
As long as you use a standard container, that should work, and I think is okay.
Alternatively, since it is a member of a class, then you can use typedef
and expose the value_type
as nested type of the class:
class demo
{
public:
typedef std::vector<std::string> container_type;
typedef container_type::value_type value_type;
value_type call_mem()
{
return *std::begin(memory_); //it is more generic!
}
private:
container_type memory_;
};
Note that *std::begin(memory_)
is more generic than both memory_[0]
and *memory_.begin()
as with it, even arrays would work, but that is less likely to benefit you in real code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With