Blender  V3.3
Classes | Namespaces | Typedefs | Enumerations | Variables
BLI_parameter_pack_utils.hh File Reference
#include <tuple>
#include <type_traits>
#include "BLI_utildefines.h"

Go to the source code of this file.

Classes

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

Namespaces

 blender
 
 blender::detail
 
 blender::parameter_pack_utils_static_tests
 

Typedefs

template<typename T , T Value, size_t Size>
using blender::make_value_sequence = decltype(detail::make_value_sequence_impl< T, Value >(std::make_index_sequence< Size >()))
 
template<typename T , T Value1, T Value2, size_t Size, size_t... Value1Indices>
using blender::make_two_value_sequence = decltype(detail::make_two_value_sequence_impl< T, Value1, Value2 >(ValueSequence< size_t, Value1Indices... >(), std::make_index_sequence< Size >()))
 

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.