2015-09-26 3 views
2

Я знаю, как я могу получить размер объекта кортежа в boost::hana как это:Повышение размера Hana кортежа типа

auto tupleSize = hana::size(hana::make_tuple(1,2,3)) 

Но насчет размера типа кортежа? СТЛИ обеспечивает Allready следующего типа кортежа особенность:

constexpr size_t tupleSize = std::tuple_size<std::tuple<int, int, int>>::value; 

Есть ли подобный тип черт в Hana?

ответ

2

Существует нет. Я предполагаю, что вы злоупотребляете Ханой здесь, или что существует эквивалентный способ сделать то, что вы пытаетесь достичь, без необходимости звонить size по типу кортежа. Но я не могу точно знать, не увидев остальную часть вашего кода, поэтому возьмите это с солью.

Способ, которым вы могли обойти недостаток tuple_size-like metafunction, - это использовать declval. Вы могли бы написать:

constexpr size_t tupleSize = decltype(
    hana::size(std::declval<hana::tuple<T...>>()) 
)::value; 

Обратите внимание, что в зависимости от контекста, в котором вы должны назвать это, это может быть даже можно использовать sizeof...(T), если у вас есть эта информация.

+0

Возможно, я злоупотребляю ханой, но я действительно хочу достичь размера двух пакетов параметров '... T_A' и' ... T_B', а затем вычесть его размеры. Разница затем используется в качестве аргумента шаблона для класса. – erikzenker

+2

Не будет 'sizeof ... (T_A) - sizeof ... (T_B)' работать? –

+0

О, я не знал об этой конструкции, thx. – erikzenker

Смежные вопросы