Metafunction
Switch
Metaprogramming switch expression.
Include Headers
seqan/basic.h
Examples
int switchTest(False const &) { return 0; }
int switchTest(True const &) { return 1; }
int switchTest(NilCase const &) { return 2; }
template <int X>
struct SwitchTest
{
typedef typename Switch<
X,
Case<-1, Nothing,
Case<0, False,
Case<1, True
> > > >::Type Type;
};
SEQAN_DEFINE_TEST(test_metaprogramming_switch)
{
typedef typename SwitchTest<-1>::Type T1;
typedef typename SwitchTest< 0>::Type T2;
typedef typename SwitchTest< 1>::Type T3;
typedef typename SwitchTest< 2>::Type T4;
std::cout << switchTest(T1()) << std::endl; // => -1
std::cout << switchTest(T2()) << std::endl; // => 0
std::cout << switchTest(T3()) << std::endl; // => 1
std::cout << switchTest(T4()) << std::endl; // => 2
}
SeqAn - Sequence Analysis Library - www.seqan.de