- Type-safe printf
- Forwarding of arbitrary many constructor arguments in factory methods
- Having arbitrary base-classes allows for putting and removing useful policies.
- Initializing by moving heterogenous typed objects directly into a container by having a variadic template'd constructor.
- Having a literal operator that can calculate a value for a user defined literal (like "10110b").
Sample to 3:
template<typename... T> struct flexible : T... { flexible(): T()... { } };
Sample to 4:
struct my_container { template<typename... T> my_container(T&&... t) { } };
my_container c = { a, b, c };
Sample to 5:
template<char... digits>
int operator "" b() { return convert<digits...>::value; }
See this example code: here
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…