Blender V5.0
BLI_parameter_pack_utils.hh File Reference
#include <cstddef>
#include <tuple>
#include <type_traits>

Go to the source code of this file.

Classes

struct  blender::TypeForValue< T, Element >
struct  blender::TypeTag< T >
struct  blender::ValueSequence< T, Elements >
struct  blender::TypeSequence< T >

Namespaces

namespace  blender
namespace  blender::detail
namespace  blender::parameter_pack_utils_static_tests

Typedefs

template<typename T, T Value, size_t Size>
using blender::make_value_sequence
template<typename T, T Value1, T Value2, size_t Size, size_t... Value1Indices>
using blender::make_two_value_sequence

Enumerations

enum class  blender::parameter_pack_utils_static_tests::MyEnum { blender::parameter_pack_utils_static_tests::A , blender::parameter_pack_utils_static_tests::B }

Variables

template<typename T, T Value, size_t... I>
ValueSequence< T,((I==0) ? Value :Value)... > blender::detail::make_value_sequence_impl (std::index_sequence< I... >)
template<typename T, T Value1, T Value2, size_t... Value1Indices, size_t... I>
ValueSequence< T,(ValueSequence< size_t, Value1Indices... >::template contains< I >() ? Value1 :Value2)... > blender::detail::make_two_value_sequence_impl (ValueSequence< size_t, Value1Indices... >, std::index_sequence< I... >)

Detailed Description

C++ has a feature called "parameter packs" which allow building variadic templates. This file has some utilities to work with such parameter packs.

Definition in file BLI_parameter_pack_utils.hh.