C++0x will allow template to take an arbitrary number of arguments. What is the best use of this feature other than implementing tuples ?
Yes, but I still have to see a very elegant implementation of that :-)
Nicola Bonelli
2008-11-09 18:02:26
I think this specific example is somewhat of a degenerate case. Remember that for every instantiation the compiler needs to create more code. can you imagine creating 100+ versions of printf for every possible argument combination used? Oh the bloat!
shoosh
2008-11-09 19:33:50
@Shy: not if all the versions are inline wrappers for the *real* printf.
CesarB
2008-11-09 20:22:35
+1
A:
Allowing things like Boost.Function to take arbitrary numbers of parameters
1800 INFORMATION
2008-11-09 18:09:07
+9
A:
- Type-safe printf is by far the most useful feature
- 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
Johannes Schaub - litb
2008-11-10 10:02:19