template<typename T>
class maxon::TmpBlock< T >
To pass a temporary block of values (given by an initializer list) to a function parameter of type Block<const T>, you have to construct the temporary block as a TmpBlock<T> (which has Block as its base class). For safety reasons, Block<const T> itself can't be constructed from an initializer list.
void Func1(const Block<const Int>& values);
Func1(TmpBlock<Int>{1, 4, 42});
If the compiler can deduce the correct type, T can be omitted. That's not the case in the previous example, because the compiler would deduce int from the given values 1, 4, 42, which is different from Int. But in the following example the compiler deduces the correct type String:
void Func2(const Block<const String>& values);
MAXON_IMPLICIT TmpBlock(const std::initializer_list< T > &list)
Definition: block.h:1126
For basic functions which are often used with temporary blocks, it may make sense to provide an overload for TmpBlock to simplify call sites:
Int SomeBasicFunction(
const Block<const String>& values);
Int SomeBasicFunction(TmpBlock<String>&& values) {
return SomeBasicFunction(values.ToBlock()); }
SomeBasicFunction({"A"_s, "B"_s});
Int64 Int
signed 32/64 bit int, size depends on the platform
Definition: apibase.h:196
- Template Parameters
-
| T | Type of elements of the block. This has to be a non-const type, but the underlying Block will have element type const T. |
|
| MAXON_IMPLICIT | TmpBlock (const std::initializer_list< T > &list) |
| |
| | MAXON_DISALLOW_COPY_AND_ASSIGN (TmpBlock) |
| |
| const Block< const T > & | ToBlock () |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | Block () |
| |
| constexpr MAXON_ATTRIBUTE_FORCE_INLINE | Block (const T *ptr, Int size, Int stride=(STRIDED &&GENERIC) ? -1 :SIZEOF(StrideType)) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | Block (Iterator start, Int size, Int stride=(STRIDED &&GENERIC) ? -1 :SIZEOF(StrideType)) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE MAXON_IMPLICIT | Block (const T(&array)[N]) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | Block (ANY1 *ptr, Int size) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE MAXON_IMPLICIT | Block (const Block< ANY > &src) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE MAXON_IMPLICIT | Block (ANY(&array)[N]) |
| |
| | Block (const Block &src)=default |
| |
| Block & | operator= (const Block &src)=default |
| |
| Result< void > | CopyFrom (const Block &src)=delete |
| |
| | operator ArrayImpl< Block & > ()=delete |
| |
| | operator ArrayImpl< const Block & > () const=delete |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Int | GetStride () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | IsStrided () const |
| |
| void | Set (const T *ptr, Int size, Int stride=(STRIDED &&GENERIC) ? -1 :SIZEOF(StrideType)) |
| |
| void | Reset () |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator typename std::conditional< STRIDED, DeleteReturnType01, Block< const T, true, MOVE >>::type () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator typename std::conditional< STRIDED||CONSTBLOCK, DeleteReturnType02, Block< const const T, true, MOVE >>::type () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator typename std::conditional< CONSTBLOCK, DeleteReturnType03, const Block< const const T, STRIDED, MOVE > & >::type () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator typename std::conditional< STRIDED||!MOVE, DeleteReturnType04, Block< const T, true, false >>::type () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator typename std::conditional< STRIDED||!MOVE||CONSTBLOCK, DeleteReturnType05, Block< const const T, true, false >>::type () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator typename std::conditional<!MOVE||CONSTBLOCK, DeleteReturnType06, const Block< const const T, STRIDED, false > & >::type () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator typename std::conditional<!MOVE, DeleteReturnType07, const Block< const T, STRIDED, false > & >::type () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator typename std::conditional< GENERIC, DeleteReturnType08, const Block< typename InheritConst< Generic, const T >::type, STRIDED > & >::type () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator typename std::conditional< BYTE_OR_CHAR, const Block< typename InheritConst< SwapByteChar, const T >::type, STRIDED >, DeleteReturnType09 >::type & () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator typename std::conditional< BYTE_OR_CHAR &&!CONSTBLOCK, const Block< const SwapByteChar, STRIDED >, const DeleteReturnType09 >::type & () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE const T * | GetFirst () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE void | SetFirst (const T *value) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE const T * | GetLast () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE const T & | operator[] (Int index) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Block | Slice (Int start) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Block | Slice (Int start, Int end) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | StartsWith (const Block &prefix) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | EndsWith (const Block &suffix) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Iterator | Begin () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Iterator | End () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Int | GetCapacityCount () const |
| |
| Result< void > | CopyValuesFrom (const Block< T2, S2, M2 > &other) |
| |
| Result< void > | ConstructValuesFrom (const Block< T2, S2, M2 > &other) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Int | GetMemorySize () const |
| |
| Int | GetBlock (Int index, Block< const const T, false > &block) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Int | GetBlock (Int index, typename std::conditional< CONSTBLOCK, DeleteReturnType01, Block< const T, false > & >::type block) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Int | GetBlock (Int index, typename std::conditional< CONSTBLOCK, DeleteReturnType02, StridedBlock< const T > & >::type block) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Int | GetBlock (Int index, StridedBlock< const const T > &block) const |
| |
| UniqueHash | GetUniqueHashCode () const |
| |
| void | CombineUniqueHash (UniqueHasher &hash) const |
| |
| std::enable_if<!STRIDED &&std::is_same< BLOCK, Block >::value, Bool >::type | IsEqualImpl (const BLOCK &other, COMPARE &&cmp, OverloadRank1) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE const T * | GetPtr (Int index) const |
| |
| constexpr MAXON_ATTRIBUTE_FORCE_INLINE | ArrayBase (ARGS &&... args) |
| |
| ArrayImpl< Block< const T, STRIDED, MOVE > & > | ToArray () |
| |
| ArrayImpl< const Block< const T, STRIDED, MOVE > & > | ToArray () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator ArrayImpl< Block< const T, STRIDED, MOVE > & > () |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE | operator ArrayImpl< const Block< const T, STRIDED, MOVE > & > () const |
| |
| template<typename... ARGS> |
| constexpr MAXON_ATTRIBUTE_FORCE_INLINE | ArrayBase0 (ARGS &&... args) |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator< (const COLLECTION2 &other) const |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator<= (const COLLECTION2 &other) const |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator> (const COLLECTION2 &other) const |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator>= (const COLLECTION2 &other) const |
| |
| template<typename COMPARE = EqualityCompare, typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, COMPARERESULT >::type | Compare (const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | IsValidIndex (Int index) const |
| |
| Result< void > | CheckValidIndex (Int index) const |
| |
| Int | FindIndex (typename ByValueParam< VALUETYPE >::type v, Int start) const |
| |
| Int | FindLastIndex (typename ByValueParam< VALUETYPE >::type v) const |
| |
| Int | FindLastIndex (typename ByValueParam< VALUETYPE >::type v, Int start) const |
| |
| Bool | EraseFirst (typename ByValueParam< VALUETYPE >::type v) |
| |
| Int | EraseAll (typename ByValueParam< VALUETYPE >::type v) |
| |
| template<typename COLLECTION2 > |
| Result< void > | AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0) |
| |
| template<typename COLLECTION2 > |
| Result< void > | InsertAll (Int index, COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
| |
| template<typename COLLECTION2 > |
| Result< void > | Add (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
| |
| template<typename COLLECTION2 > |
| Result< void > | CopyValuesFrom (const COLLECTION2 &src, Int srcStart=0, Int start=0, Int count=-1) |
| |
| template<typename COLLECTION2 > |
| Result< void > | SubtractImpl (COLLECTION2 &&other, OverloadRank0) |
| |
| template<typename COLLECTION2 , typename COMPARE > |
| Bool | IsEqualImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const |
| |
| template<typename COLLECTION2 , typename COMPARE > |
| COMPARERESULT | CompareImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const |
| |
| HashInt | GetHashCode () const |
| |
| UniqueHash | GetUniqueHashCode () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< COLLECTION > | Slice (Int start) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< const COLLECTION > | Slice (Int start) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< COLLECTION > | Slice (Int start, Int end) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< const COLLECTION > | Slice (Int start, Int end) const |
| |
| BlockIterator< COLLECTION, VALUETYPE, false, false > | GetBlocks () |
| |
| BlockIterator< COLLECTION, VALUETYPE, true, false > | GetBlocks () const |
| |
| BlockIterator< COLLECTION, VALUETYPE, false, true > | GetStridedBlocks () |
| |
| BlockIterator< COLLECTION, VALUETYPE, true, true > | GetStridedBlocks () const |
| |
| template<typename... ARGS> |
| MAXON_ATTRIBUTE_FORCE_INLINE | Collection (ARGS &&... args) |
| |
| ResultOk< void > | VariadicAppend () |
| |
| template<typename V , typename... VALUES> |
| Result< void > | VariadicAppend (V &&value, VALUES &&... rest) |
| |
| | operator ValueReceiver< const VALUETYPE & > () |
| |
| | operator ValueReceiver< VALUETYPE && > () |
| |
| | operator ValueReceiver< typename std::conditional< STD_IS_REPLACEMENT (scalar, VALUETYPE) |
| |
| DummyParamType & | type () |
| |
| template<typename FN > |
| Result< Bool > | ForEach (FN &&callback) const |
| |
| template<typename FN > |
| Result< Bool > | ForEach (FN &&callback) |
| |
| template<typename H = COLLECTION> |
| H::Iterator | Find (typename ByValueParam< VALUETYPE >::type v) |
| |
| template<typename H = COLLECTION> |
| H::ConstIterator | Find (typename ByValueParam< VALUETYPE >::type v) const |
| |
| Int | FindIndex (typename ByValueParam< VALUETYPE >::type v) const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | Contains (typename ByValueParam< VALUETYPE >::type v) const |
| |
| template<typename... ARGS> |
| MAXON_ATTRIBUTE_FORCE_INLINE | BaseCollection (ARGS &&... args) |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator== (const COLLECTION2 &other) const |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type | operator!= (const COLLECTION2 &other) const |
| |
| template<typename COMPARE = EqualityCompare, typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value &&!STD_IS_REPLACEMENT(same, typename std::decay< COMPARE >::type, EQUALITY), Bool >::type | IsEqual (const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY) |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | CopyFrom (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE) |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | Subtract (COLLECTION2 &&other) |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | Intersect (const COLLECTION2 &other) |
| |
| template<typename COLLECTION2 > |
| Bool | Intersects (const COLLECTION2 &other) const |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE Result< void > | CopyFromImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, OverloadRank0) |
| |
| template<typename COLLECTION2 > |
| Result< void > | AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0) |
| |
| template<typename COLLECTION2 > |
| Result< void > | IntersectImpl (COLLECTION2 &&other, OverloadRank0) |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | IsEmpty () const |
| |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | IsPopulated () const |
| |
| String | ToString (const FormatStatement *formatStatement=nullptr) const |
| |
| template<typename COLLECTION2 > |
| MAXON_ATTRIBUTE_FORCE_INLINE Bool | ContainsAll (COLLECTION2 &&other) const |
| |
| template<typename COLLECTION2 > |
| Bool | ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const |
| |