Lumiera  0.pre.03
»edit your freedom«
variadic-argument-picker-test.cpp File Reference

Go to the source code of this file.

Description

verify metaprogramming manipulation on a variadic parameter pack.

The unittest VariadicArgumentPicker_test calls a variadic function with different number of arguments and it employs variadic-helper.hpp to alter the order of passed arguments.

The primary difficulty when dealing with variadic templates is the fact that a variadic parameter pack is not a first class type, rather a special language construct which can only be used to perform a pattern match. For this reason, metaprogramming has to proceed "backwards", by invoking a delegate template, thereby dissecting the parameter pack by a pattern match. The key technique for more elaborate manipulation is to construct a variadic index sequence as a helper, and then to expand that index sequence to drive instantiation of a helper template on individual arguments.

See also
variadic-helper.hpp
path-array.hpp
TypeSeqManipl_test
TupleRecordInit_test
TypeListManip_test

Definition in file variadic-argument-picker-test.cpp.

#include "lib/test/run.hpp"
#include "lib/meta/variadic-helper.hpp"
#include "lib/format-string.hpp"
#include "lib/format-cout.hpp"
#include "lib/format-util.hpp"
#include <utility>

Classes

struct  N< n >
 
class  VariadicArgumentPicker_test
 

Functions

template<class... ARGS>
string fun (ARGS &&...args)
 Variadic test function to invoke.
 
 LAUNCHER (VariadicArgumentPicker_test, "unit common")
 Register this test class... More...
 

Namespaces

 lib
 Implementation namespace for support and library code.
 

Function Documentation

◆ LAUNCHER()

lib::meta::test::LAUNCHER ( VariadicArgumentPicker_test  ,
"unit common"   
)

Register this test class...