5

これはかなり基本的なことと思われるので、短い、組み込みの、簡単に読めるソリューションです。私が想像するために管理
最短のものがはるかに短くて読みやすいことからですhana :: tuple_t <T、T、T、...> Tおよび要素の数を指定する方法n

hana::unfold_left<hana::tuple_tag>(hana::int_c<n>, [] (auto count) { 
      return hana::if_(count == hana::int_c<0>, hana::nothing, 
          hana::just(hana::make_pair(count - hana::int_c<1>, 
                 hana::type_c<T>))); 
     }); 

です...

+1

'はな:: replicate'が適切と思わ:
リファレンスマニュアルの例では、これを実現する方法についての十分な情報を提供します。 – llonesmiz

答えて

3

としては、まさにそれを行うことができます@jv_ hana::replicateによって指摘しました。

// Copyright Louis Dionne 2013-2016 
// Distributed under the Boost Software License, Version 1.0. 
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 

#include <boost/hana/equal.hpp> 
#include <boost/hana/integral_constant.hpp> 
#include <boost/hana/optional.hpp> 
#include <boost/hana/replicate.hpp> 
#include <boost/hana/tuple.hpp> 

namespace hana = boost::hana; 
static_assert(hana::replicate<hana::tuple_tag>('x', hana::size_c<2>) == hana::make_tuple('x', 'x'), ""); 
// Of course, there can't be more than one element in an `optional`. 
static_assert(hana::replicate<hana::optional_tag>('x', hana::size_c<2>) == hana::just('x'), ""); 
int main() { } 
関連する問題