Use if constexpr to make things a lot more readable

This commit is contained in:
louiz’
2018-03-16 01:13:50 +01:00
parent ba879a882e
commit d62ca9f879
7 changed files with 163 additions and 212 deletions
+9 -12
View File
@@ -8,19 +8,16 @@
namespace
{
template <std::size_t N=0, typename... T>
typename std::enable_if<N == sizeof...(T), void>::type
add_column_name(std::string&)
{ }
template <std::size_t N=0, typename... T>
typename std::enable_if<N < sizeof...(T), void>::type
add_column_name(std::string& out)
void add_column_name(std::string& out)
{
using ColumnType = typename std::remove_reference<decltype(std::get<N>(std::declval<std::tuple<T...>>()))>::type;
out += ColumnType::name;
if (N != sizeof...(T) - 1)
out += ",";
add_column_name<N+1, T...>(out);
if constexpr(N < sizeof...(T))
{
using ColumnType = typename std::remove_reference<decltype(std::get<N>(std::declval<std::tuple<T...>>()))>::type;
out += ColumnType::name;
if (N != sizeof...(T) - 1)
out += ",";
add_column_name<N + 1, T...>(out);
}
}
}