Is there a use case in our C++ client code to ever use out parameters? Currently code uses out parameters to return multiple values from a function. [1]
virtual int64_t* PdxReader::readLongArray(const char* fieldName, int32_t& length) = 0; In this case, we could return a tuple instead. I think the advantage of this is it doesn't force a separation between the variable declaration and assignment, which may lead to spaghetti code. I think avoiding out parameters also leads to more well defined behavior. What would one expect if they called getCqListeners with an already partially populated vector? [2] virtual void CqAttributes::getCqListeners(std::vector<CqListenerPtr& v) = 0; As a counter argument, could function overload resolution be a valid use case of out parameters? In PdxReader::readType methods, Type seems redundant. As a user, why should I have to call readLongArray(int64_t[]&) rather than just call read(int64_t[]&)? In this case, if we didn't use out parameter our signature clashes with other read methods. Thoughts? Thanks, David [1] https://github.com/apache/geode-native/blob/44635ffa95926c9cffecc1dcaac02fb3012d1eef/cppcache/include/geode/PdxReader.hpp#L288 [2] https://github.com/apache/geode-native/blob/44635ffa95926c9cffecc1dcaac02fb3012d1eef/cppcache/include/geode/CqAttributes.hpp#L60