In C ++, this is not possible. It is called "perfect forwarding" and is allowed in C ++ 0x. You can simulate it by creating overloads of your constructor to a fixed maximum (for example, 8 parameters), for both constant and non-constant links. This is still not ideal (temporary files will not be redirected as temporary), but usually work in practice:
template<typename T1>
B(T1 &a1):A(a1) {
}
template<typename T1>
B(T1 const &a1):A(a1) {
}
template<typename T1, typename T2>
B(T1 &a1, T2 &a2):A(a1, a2) {
}
template<typename T1, typename T2>
B(T1 const &a1, T2 const &a2):A(a1, a2) {
}
template<typename T1, typename T2>
B(T1 const &a1, T2 &a2):A(a1, a2) {
}
template<typename T1, typename T2>
B(T1 &a1, T2 const &a2):A(a1, a2) {
}
Boost.Preprocessor script, , .
, , ++ 0x, , ("using A::A;").