first commit
This commit is contained in:
57
extern/ustl/1.5/bvt/bvt27.cc
vendored
Normal file
57
extern/ustl/1.5/bvt/bvt27.cc
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
// This file is part of the uSTL library, an STL implementation.
|
||||
//
|
||||
// Copyright (c) 2005 by Mike Sharov <msharov@users.sourceforge.net>
|
||||
// This file is free software, distributed under the MIT License.
|
||||
|
||||
#include "stdtest.h"
|
||||
using namespace tm;
|
||||
|
||||
void Print (int v)
|
||||
{ cout.format ("PrintInt %d\n", v); }
|
||||
void Print (short v)
|
||||
{ cout.format ("PrintShort %d\n", v); }
|
||||
void Print (float v)
|
||||
{ cout.format ("PrintFloat %.2f\n", v); }
|
||||
|
||||
class Base { };
|
||||
class Derived : public Base { };
|
||||
|
||||
void TestTypelists (void)
|
||||
{
|
||||
cout << "----------------------------------------------------------------------\n"
|
||||
" Testing functionality from typet.h\n"
|
||||
"----------------------------------------------------------------------\n";
|
||||
NullType nullType;
|
||||
cout.format ("sizeof(NullType) = %zu\n", sizeof(nullType));
|
||||
cout.format ("Int2Type(42)::value = %d\n", Int2Type<42>::value);
|
||||
Type2Type<int>::OriginalType t2tiv = 56;
|
||||
cout.format ("Type2Type type value = %d\n", t2tiv);
|
||||
|
||||
cout << "int == int is " << bool(IsSameType<int, int>::value) << endl;
|
||||
cout << "float == int is " << bool(IsSameType<float, int>::value) << endl;
|
||||
|
||||
Print (Select<Conversion<long,int>::exists2Way, int, float>::Result(567));
|
||||
cout << "Base is SuperSubclass from Derived is " << bool(SuperSubclass<Base,Derived>::value) << endl;
|
||||
cout << "Base is SuperSubclass from Base is " << bool(SuperSubclass<Base,Base>::value) << endl;
|
||||
cout << "Base is SuperSubclassStrict from Derived is " << bool(SuperSubclassStrict<Base,Derived>::value) << endl;
|
||||
cout << "Base is SuperSubclassStrict from Base is " << bool(SuperSubclassStrict<Base,Base>::value) << endl;
|
||||
|
||||
cout << "\n----------------------------------------------------------------------\n"
|
||||
" Testing functionality from typelist.h\n"
|
||||
"----------------------------------------------------------------------\n";
|
||||
typedef tl::Seq<char, int, short, long>::Type IntTypesList;
|
||||
typedef tl::Seq<float, double>::Type FloatTypesList;
|
||||
cout.format ("Length of IntTypesList is %d\n", tl::Length<IntTypesList>::value);
|
||||
Print (tl::TypeAt<IntTypesList, 2>::Result(1234));
|
||||
Print (tl::TypeAtNonStrict<FloatTypesList, 0, int>::Result(1235));
|
||||
Print (tl::TypeAtNonStrict<FloatTypesList, 2, short>::Result(1236));
|
||||
typedef tl::Append<IntTypesList, FloatTypesList>::Result AllTypesList;
|
||||
cout.format ("Index of double in AllTypesList is %d\n", tl::IndexOf<AllTypesList,double>::value);
|
||||
typedef tl::Erase<AllTypesList, float>::Result NoFloatList;
|
||||
cout.format ("Index of float in NoFloatList is %d\n", tl::IndexOf<NoFloatList,float>::value);
|
||||
cout.format ("Index of double in NoFloatList is %d\n", tl::IndexOf<NoFloatList,double>::value);
|
||||
typedef tl::Reverse<AllTypesList>::Result ReversedList;
|
||||
cout.format ("Index of double in ReversedList is %d\n", tl::IndexOf<ReversedList,double>::value);
|
||||
}
|
||||
|
||||
StdBvtMain (TestTypelists)
|
||||
Reference in New Issue
Block a user