Supongamos que necesitamos una función que devuelva algo. Pero ese algo no se puede encontrar. Veo opciones:¿Es bueno usar boost :: tuple <bool, T> para indicar si se encontró T o no?
1. T find(bool &ok); //return default T value if not found
Podemos hacer una estructura:
template <typename T>
class CheckableValue
{
public:
CheckableValue(),
_hasValue(false)
{
}
CheckableValue(const T &t):
_value(t),
_hasValue(true)
{
}
inline bool hasValue() const {return _hasValue}
const T &value() const
{
assert(hasValue());
return _value;
}
private:
T _value;
bool _hasValue;
};
y hacer la función:
2. CheckableValue<T> find();
O podemos utilizar:
3.boost::tuple<bool, T> find()
Qué hacer crees que es preferible?
boost opcional http://www.boost.org/doc/libs/1_41_0/libs/optional/doc/html/index.html es realmente genial. Lo uso en muchos lugares que se parecen al del póster. –