Dynamically call lambda based on stream input: Try 2
It is becoming really good, but there are still a few things that can be done:


There already is a standard way to "clean" a type: std::decay. It does a little bit more than just removing the reference and the const qualification though, but it does basically what you need. Therefore, you can totally get rid of CleanType and use std::decay instead:

using AllArgs = std::tuple&lt;typename std::decay&lt;Args&gt;::type...&gt;;


And since you are using C++14 (I assume this because of std::integer_sequence), you can even use std::decay_t instead:

using AllArgs = std::tuple&lt;std::decay_t&lt;Args&gt;...&gt;;

N3887 also made its way to the C++14 standard. Therefore, if you actually use C++14, you will be able to use the alias template std::tuple_element_t instead of the metafunction std::tuple_element:

ArgumentTupple arguments(row.getValue1&lt;std::tuple_element_t&lt;S, ArgumentTupple&gt;&gt;()...);

This line looks kind of wrong:

typedef typename std::make_integer_sequence&lt;int, size&gt;      Sequence;


When I tried to compile your example, it didn't compile at first because of the typename in this line. std::make_integer_sequence is an alias template, there shouldn't be a typename before it.
You sometimes use ResultRowSet and use ResultSetRow at some other places. It's probably a typo or something like that :p
ArgumentTupple also feels like a typo. It should probably be ArgumentTuple.
std::integer_sequence does not contain anything. Therefore, there is no need to pass is by const&amp;, you can simply pass it by value.