Re: decltype to extract function parameter type prior to calling it
"gnobal" <gnobal@gmail.com>
I'm using a library that has a function that looks like this:
vector<int> getData(const vector<int>& keys, int32_t limit);
(there may be more than one datum per key)
Today I'm passing numeric_limits<int32_t>::max() as the limit, but I
was wondering whether there is a way to extract the type of the limit
parameter so that my argument will always have the right max value.
For example, if the library's author decides to make the limit an
int64_t, I wouldn't know. A worse case is if the author decides to
make it an int16_t.
If the library changes its public interface, you're supposed to review all
pieces of your code and decide at each place what is the impact of the
changes.
I realize that this might not be the best library interface design,
It has little to do with design itself, rather with design *CHANGE*. A
public interface shall be stable. Once it is out the door you kiip it that
way, or change only in way it can not change meaning of any existing code.
So your first task is to look after your fear's foundation. There are good
chances that you jumped on a shadow. While if it is actually open to
arbitrary unannounced changes, your work shall concentrate on detecting them
rather than thinking silver bullets that mitigate.
but it's in a library I'm using and I can't change it. Also, maybe
there are other examples where this might be needed.
In general there type traits in tr1:: and boost and they IIRC include
function param types. So it is possible to find out the type and its
attached max. But I doubt it worth the effort.