61#define SHOW_CHECK(_EXPR_) cout << STRINGIFY(_EXPR_) << "\t : " << (_EXPR_::value? "Yes":"No") << endl;
62#define ANALYSE(_TYPE_) \
63 cout << "Type: " STRINGIFY(_TYPE_) " ......"<<endl; \
64 SHOW_CHECK (is_StringLike<_TYPE_>); \
65 SHOW_CHECK (BasicallyString<_TYPE_>); \
66 SHOW_CHECK (BasicallyCString<_TYPE_>); \
67 SHOW_CHECK (std::is_arithmetic<_TYPE_>); \
68 SHOW_CHECK (can_lexical2string<_TYPE_>); \
69 SHOW_CHECK (can_convertToString<_TYPE_>); \
70 SHOW_CHECK (use_StringConversion4Stream<_TYPE_>);
76 using CharLit =
decltype(
"literal");
77 using CharPtr =
const char*;
78 using StringPtr =
string *;
79 using StringRef =
string &;
80 using StringRRef =
string &&;
81 using StrConstRef =
string const&;
104 cout <<
"───────────────────────────╼━━━━━━━━━━╾───────────────────────────"<<endl;
139 auto silent = makeP<Reticent>();
140 auto chatty = makeP<GenNode>(
"Hui",
"Buh");
142 cout <<
"smart-ptr, no string conv..." << silent <<endl;
143 cout <<
"smart-ptr, custom conv......" << chatty <<endl;
145 cout <<
"reference, no string conv..." << *silent <<endl;
146 cout <<
"reference, custom conv......" << *chatty <<endl;
147 cout <<
"pointer, custom conv......" << chatty.get() <<endl;
150 cout <<
"smart-ptr, NULL pointee....." << chatty <<endl;
151 cout <<
"pointer, NULL pointee....." << chatty.get() <<endl;
Customised refcounting smart pointer template, built upon std::shared_ptr, but forwarding type relati...
Generic building block for tree shaped (meta)data structures.
P< X > makeP(ARGS &&... ctorArgs)
Helper to create and manage by lib::P.
Test runner and basic definitions for tests.
Customised refcounting smart pointer.
Simplistic test class runner.
#define LAUNCHER(_TEST_CLASS_, _GROUPS_)
generic data element node within a tree
Helpers for type detection, type rewriting and metaprogramming.