/
usr
/
include
/
boost
/
hana
/
/usr/include/boost/hana
mkdir
upload
Name
Size
Mode
Actions
concept/
-
0755
rm
core/
-
0755
rm
detail/
-
0755
rm
experimental/
-
0755
rm
ext/
-
0755
rm
functional/
-
0755
rm
fwd/
-
0755
rm
accessors.hpp
1513
0644
edit
dl
rm
adapt_adt.hpp
422
0644
edit
dl
rm
adapt_struct.hpp
437
0644
edit
dl
rm
adjust.hpp
1698
0644
edit
dl
rm
adjust_if.hpp
2515
0644
edit
dl
rm
all.hpp
1327
0644
edit
dl
rm
all_of.hpp
1570
0644
edit
dl
rm
and.hpp
1667
0644
edit
dl
rm
any.hpp
1327
0644
edit
dl
rm
any_of.hpp
7531
0644
edit
dl
rm
ap.hpp
2496
0644
edit
dl
rm
append.hpp
2357
0644
edit
dl
rm
assert.hpp
16325
0644
edit
dl
rm
at.hpp
1659
0644
edit
dl
rm
at_key.hpp
3009
0644
edit
dl
rm
back.hpp
1534
0644
edit
dl
rm
basic_tuple.hpp
9455
0644
edit
dl
rm
bool.hpp
9747
0644
edit
dl
rm
cartesian_product.hpp
3860
0644
edit
dl
rm
chain.hpp
1488
0644
edit
dl
rm
comparing.hpp
1222
0644
edit
dl
rm
concat.hpp
2712
0644
edit
dl
rm
concept.hpp
1301
0644
edit
dl
rm
config.hpp
7152
0644
edit
dl
rm
contains.hpp
1560
0644
edit
dl
rm
core.hpp
610
0644
edit
dl
rm
count.hpp
1496
0644
edit
dl
rm
count_if.hpp
3137
0644
edit
dl
rm
cycle.hpp
4275
0644
edit
dl
rm
define_struct.hpp
442
0644
edit
dl
rm
difference.hpp
1116
0644
edit
dl
rm
div.hpp
3804
0644
edit
dl
rm
drop_back.hpp
2475
0644
edit
dl
rm
drop_front.hpp
1796
0644
edit
dl
rm
drop_front_exactly.hpp
3030
0644
edit
dl
rm
drop_while.hpp
3174
0644
edit
dl
rm
duplicate.hpp
1392
0644
edit
dl
rm
empty.hpp
1400
0644
edit
dl
rm
equal.hpp
8012
0644
edit
dl
rm
erase_key.hpp
1029
0644
edit
dl
rm
eval.hpp
1798
0644
edit
dl
rm
eval_if.hpp
3381
0644
edit
dl
rm
extend.hpp
1498
0644
edit
dl
rm
extract.hpp
1248
0644
edit
dl
rm
fill.hpp
2216
0644
edit
dl
rm
filter.hpp
4473
0644
edit
dl
rm
find.hpp
1732
0644
edit
dl
rm
find_if.hpp
4011
0644
edit
dl
rm
first.hpp
1242
0644
edit
dl
rm
flatten.hpp
1769
0644
edit
dl
rm
fold.hpp
378
0644
edit
dl
rm
fold_left.hpp
3128
0644
edit
dl
rm
fold_right.hpp
3147
0644
edit
dl
rm
for_each.hpp
1863
0644
edit
dl
rm
front.hpp
1315
0644
edit
dl
rm
functional.hpp
1186
0644
edit
dl
rm
fuse.hpp
1309
0644
edit
dl
rm
greater.hpp
2401
0644
edit
dl
rm
greater_equal.hpp
2552
0644
edit
dl
rm
group.hpp
5543
0644
edit
dl
rm
hash.hpp
3572
0644
edit
dl
rm
if.hpp
1834
0644
edit
dl
rm
index_if.hpp
3485
0644
edit
dl
rm
insert.hpp
1620
0644
edit
dl
rm
insert_range.hpp
2171
0644
edit
dl
rm
integral_constant.hpp
389
0644
edit
dl
rm
intersection.hpp
1100
0644
edit
dl
rm
intersperse.hpp
2586
0644
edit
dl
rm
is_disjoint.hpp
2040
0644
edit
dl
rm
is_empty.hpp
1244
0644
edit
dl
rm
is_subset.hpp
2919
0644
edit
dl
rm
keys.hpp
1307
0644
edit
dl
rm
lazy.hpp
7947
0644
edit
dl
rm
length.hpp
1554
0644
edit
dl
rm
less.hpp
5322
0644
edit
dl
rm
less_equal.hpp
2485
0644
edit
dl
rm
lexicographical_compare.hpp
4344
0644
edit
dl
rm
lift.hpp
1500
0644
edit
dl
rm
map.hpp
22593
0644
edit
dl
rm
max.hpp
1759
0644
edit
dl
rm
maximum.hpp
3348
0644
edit
dl
rm
members.hpp
1970
0644
edit
dl
rm
min.hpp
1759
0644
edit
dl
rm
minimum.hpp
3353
0644
edit
dl
rm
minus.hpp
4005
0644
edit
dl
rm
mod.hpp
3804
0644
edit
dl
rm
monadic_compose.hpp
1583
0644
edit
dl
rm
monadic_fold_left.hpp
4862
0644
edit
dl
rm
monadic_fold_right.hpp
4882
0644
edit
dl
rm
mult.hpp
3747
0644
edit
dl
rm
negate.hpp
1857
0644
edit
dl
rm
none.hpp
1340
0644
edit
dl
rm
none_of.hpp
1532
0644
edit
dl
rm
not.hpp
2217
0644
edit
dl
rm
not_equal.hpp
1982
0644
edit
dl
rm
one.hpp
2432
0644
edit
dl
rm
optional.hpp
15422
0644
edit
dl
rm
or.hpp
1860
0644
edit
dl
rm
ordering.hpp
1231
0644
edit
dl
rm
pair.hpp
8048
0644
edit
dl
rm
partition.hpp
4199
0644
edit
dl
rm
permutations.hpp
2599
0644
edit
dl
rm
plus.hpp
3759
0644
edit
dl
rm
power.hpp
1954
0644
edit
dl
rm
prefix.hpp
1597
0644
edit
dl
rm
prepend.hpp
2372
0644
edit
dl
rm
product.hpp
1701
0644
edit
dl
rm
range.hpp
9910
0644
edit
dl
rm
remove.hpp
1695
0644
edit
dl
rm
remove_at.hpp
2989
0644
edit
dl
rm
remove_if.hpp
1644
0644
edit
dl
rm
remove_range.hpp
3885
0644
edit
dl
rm
repeat.hpp
1793
0644
edit
dl
rm
replace.hpp
1797
0644
edit
dl
rm
replace_if.hpp
1764
0644
edit
dl
rm
replicate.hpp
2282
0644
edit
dl
rm
reverse.hpp
1802
0644
edit
dl
rm
reverse_fold.hpp
1144
0644
edit
dl
rm
scan_left.hpp
5060
0644
edit
dl
rm
scan_right.hpp
5138
0644
edit
dl
rm
second.hpp
1253
0644
edit
dl
rm
set.hpp
11854
0644
edit
dl
rm
size.hpp
375
0644
edit
dl
rm
slice.hpp
3407
0644
edit
dl
rm
sort.hpp
8855
0644
edit
dl
rm
span.hpp
2629
0644
edit
dl
rm
string.hpp
12310
0644
edit
dl
rm
suffix.hpp
1583
0644
edit
dl
rm
sum.hpp
1661
0644
edit
dl
rm
symmetric_difference.hpp
1394
0644
edit
dl
rm
take_back.hpp
2519
0644
edit
dl
rm
take_front.hpp
2471
0644
edit
dl
rm
take_while.hpp
1776
0644
edit
dl
rm
tap.hpp
1616
0644
edit
dl
rm
then.hpp
1688
0644
edit
dl
rm
traits.hpp
10172
0644
edit
dl
rm
transform.hpp
2411
0644
edit
dl
rm
tuple.hpp
11651
0644
edit
dl
rm
type.hpp
10082
0644
edit
dl
rm
unfold_left.hpp
2204
0644
edit
dl
rm
unfold_right.hpp
2224
0644
edit
dl
rm
union.hpp
1030
0644
edit
dl
rm
unique.hpp
2361
0644
edit
dl
rm
unpack.hpp
5175
0644
edit
dl
rm
value.hpp
1561
0644
edit
dl
rm
version.hpp
2032
0644
edit
dl
rm
while.hpp
4441
0644
edit
dl
rm
zero.hpp
2454
0644
edit
dl
rm
zip.hpp
1462
0644
edit
dl
rm
zip_shortest.hpp
1604
0644
edit
dl
rm
zip_shortest_with.hpp
2116
0644
edit
dl
rm
zip_with.hpp
2292
0644
edit
dl
rm
Edit:
/usr/include/boost/hana/traits.hpp
(10172B)
/*! @file Defines function-like equivalents to the standard `<type_traits>`, and also to some utilities like `std::declval`. @copyright Louis Dionne 2013-2017 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_HANA_TRAITS_HPP #define BOOST_HANA_TRAITS_HPP #include <boost/hana/config.hpp> #include <boost/hana/integral_constant.hpp> #include <boost/hana/type.hpp> #include <cstddef> #include <type_traits> BOOST_HANA_NAMESPACE_BEGIN namespace traits { namespace detail { // We use this instead of hana::integral because we want to return // hana::integral_constants instead of std::integral_constants. template <template <typename ...> class F> struct hana_trait { template <typename ...T> constexpr auto operator()(T const& ...) const { using Result = typename F<typename T::type...>::type; return hana::integral_c<typename Result::value_type, Result::value>; } }; } /////////////////////// // Type properties /////////////////////// // Primary type categories constexpr auto is_void = detail::hana_trait<std::is_void>{}; constexpr auto is_null_pointer = detail::hana_trait<std::is_null_pointer>{}; constexpr auto is_integral = detail::hana_trait<std::is_integral>{}; constexpr auto is_floating_point = detail::hana_trait<std::is_floating_point>{}; constexpr auto is_array = detail::hana_trait<std::is_array>{}; constexpr auto is_enum = detail::hana_trait<std::is_enum>{}; constexpr auto is_union = detail::hana_trait<std::is_union>{}; constexpr auto is_class = detail::hana_trait<std::is_class>{}; constexpr auto is_function = detail::hana_trait<std::is_function>{}; constexpr auto is_pointer = detail::hana_trait<std::is_pointer>{}; constexpr auto is_lvalue_reference = detail::hana_trait<std::is_lvalue_reference>{}; constexpr auto is_rvalue_reference = detail::hana_trait<std::is_rvalue_reference>{}; constexpr auto is_member_object_pointer = detail::hana_trait<std::is_member_object_pointer>{}; constexpr auto is_member_function_pointer = detail::hana_trait<std::is_member_function_pointer>{}; // Composite type categories constexpr auto is_fundamental = detail::hana_trait<std::is_fundamental>{}; constexpr auto is_arithmetic = detail::hana_trait<std::is_arithmetic>{}; constexpr auto is_scalar = detail::hana_trait<std::is_scalar>{}; constexpr auto is_object = detail::hana_trait<std::is_object>{}; constexpr auto is_compound = detail::hana_trait<std::is_compound>{}; constexpr auto is_reference = detail::hana_trait<std::is_reference>{}; constexpr auto is_member_pointer = detail::hana_trait<std::is_member_pointer>{}; // Type properties constexpr auto is_const = detail::hana_trait<std::is_const>{}; constexpr auto is_volatile = detail::hana_trait<std::is_volatile>{}; constexpr auto is_trivial = detail::hana_trait<std::is_trivial>{}; constexpr auto is_trivially_copyable = detail::hana_trait<std::is_trivially_copyable>{}; constexpr auto is_standard_layout = detail::hana_trait<std::is_standard_layout>{}; constexpr auto is_pod = detail::hana_trait<std::is_pod>{}; constexpr auto is_literal_type = detail::hana_trait<std::is_literal_type>{}; constexpr auto is_empty = detail::hana_trait<std::is_empty>{}; constexpr auto is_polymorphic = detail::hana_trait<std::is_polymorphic>{}; constexpr auto is_abstract = detail::hana_trait<std::is_abstract>{}; constexpr auto is_signed = detail::hana_trait<std::is_signed>{}; constexpr auto is_unsigned = detail::hana_trait<std::is_unsigned>{}; // Supported operations constexpr auto is_constructible = detail::hana_trait<std::is_constructible>{}; constexpr auto is_trivially_constructible = detail::hana_trait<std::is_trivially_constructible>{}; constexpr auto is_nothrow_constructible = detail::hana_trait<std::is_nothrow_constructible>{}; constexpr auto is_default_constructible = detail::hana_trait<std::is_default_constructible>{}; constexpr auto is_trivially_default_constructible = detail::hana_trait<std::is_trivially_default_constructible>{}; constexpr auto is_nothrow_default_constructible = detail::hana_trait<std::is_nothrow_default_constructible>{}; constexpr auto is_copy_constructible = detail::hana_trait<std::is_copy_constructible>{}; constexpr auto is_trivially_copy_constructible = detail::hana_trait<std::is_trivially_copy_constructible>{}; constexpr auto is_nothrow_copy_constructible = detail::hana_trait<std::is_nothrow_copy_constructible>{}; constexpr auto is_move_constructible = detail::hana_trait<std::is_move_constructible>{}; constexpr auto is_trivially_move_constructible = detail::hana_trait<std::is_trivially_move_constructible>{}; constexpr auto is_nothrow_move_constructible = detail::hana_trait<std::is_nothrow_move_constructible>{}; constexpr auto is_assignable = detail::hana_trait<std::is_assignable>{}; constexpr auto is_trivially_assignable = detail::hana_trait<std::is_trivially_assignable>{}; constexpr auto is_nothrow_assignable = detail::hana_trait<std::is_nothrow_assignable>{}; constexpr auto is_copy_assignable = detail::hana_trait<std::is_copy_assignable>{}; constexpr auto is_trivially_copy_assignable = detail::hana_trait<std::is_trivially_copy_assignable>{}; constexpr auto is_nothrow_copy_assignable = detail::hana_trait<std::is_nothrow_copy_assignable>{}; constexpr auto is_move_assignable = detail::hana_trait<std::is_move_assignable>{}; constexpr auto is_trivially_move_assignable = detail::hana_trait<std::is_trivially_move_assignable>{}; constexpr auto is_nothrow_move_assignable = detail::hana_trait<std::is_nothrow_move_assignable>{}; constexpr auto is_destructible = detail::hana_trait<std::is_destructible>{}; constexpr auto is_trivially_destructible = detail::hana_trait<std::is_trivially_destructible>{}; constexpr auto is_nothrow_destructible = detail::hana_trait<std::is_nothrow_destructible>{}; constexpr auto has_virtual_destructor = detail::hana_trait<std::has_virtual_destructor>{}; // Property queries constexpr auto alignment_of = detail::hana_trait<std::alignment_of>{}; constexpr auto rank = detail::hana_trait<std::rank>{}; constexpr struct extent_t { template <typename T, typename N> constexpr auto operator()(T const&, N const&) const { constexpr unsigned n = N::value; using Result = typename std::extent<typename T::type, n>::type; return hana::integral_c<typename Result::value_type, Result::value>; } template <typename T> constexpr auto operator()(T const& t) const { return (*this)(t, hana::uint_c<0>); } } extent{}; // Type relationships constexpr auto is_same = detail::hana_trait<std::is_same>{}; constexpr auto is_base_of = detail::hana_trait<std::is_base_of>{}; constexpr auto is_convertible = detail::hana_trait<std::is_convertible>{}; /////////////////////// // Type modifications /////////////////////// // Const-volatility specifiers constexpr auto remove_cv = metafunction<std::remove_cv>; constexpr auto remove_const = metafunction<std::remove_const>; constexpr auto remove_volatile = metafunction<std::remove_volatile>; constexpr auto add_cv = metafunction<std::add_cv>; constexpr auto add_const = metafunction<std::add_const>; constexpr auto add_volatile = metafunction<std::add_volatile>; // References constexpr auto remove_reference = metafunction<std::remove_reference>; constexpr auto add_lvalue_reference = metafunction<std::add_lvalue_reference>; constexpr auto add_rvalue_reference = metafunction<std::add_rvalue_reference>; // Pointers constexpr auto remove_pointer = metafunction<std::remove_pointer>; constexpr auto add_pointer = metafunction<std::add_pointer>; // Sign modifiers constexpr auto make_signed = metafunction<std::make_signed>; constexpr auto make_unsigned = metafunction<std::make_unsigned>; // Arrays constexpr auto remove_extent = metafunction<std::remove_extent>; constexpr auto remove_all_extents = metafunction<std::remove_all_extents>; // Miscellaneous transformations constexpr struct aligned_storage_t { template <typename Len, typename Align> constexpr auto operator()(Len const&, Align const&) const { constexpr std::size_t len = Len::value; constexpr std::size_t align = Align::value; using Result = typename std::aligned_storage<len, align>::type; return hana::type_c<Result>; } template <typename Len> constexpr auto operator()(Len const&) const { constexpr std::size_t len = Len::value; using Result = typename std::aligned_storage<len>::type; return hana::type_c<Result>; } } aligned_storage{}; constexpr struct aligned_union_t { template <typename Len, typename ...T> constexpr auto operator()(Len const&, T const&...) const { constexpr std::size_t len = Len::value; using Result = typename std::aligned_union<len, typename T::type...>::type; return hana::type_c<Result>; } } aligned_union{}; constexpr auto decay = metafunction<std::decay>; // enable_if // disable_if // conditional constexpr auto common_type = metafunction<std::common_type>; constexpr auto underlying_type = metafunction<std::underlying_type>; constexpr auto result_of = metafunction<std::result_of>; /////////////////////// // Utilities /////////////////////// struct declval_t { template <typename T> typename std::add_rvalue_reference< typename T::type >::type operator()(T const&) const; }; constexpr declval_t declval{}; } BOOST_HANA_NAMESPACE_END #endif // !BOOST_HANA_TRAITS_HPP
Save
cmd:
run