Нет.В общем случае аргумент функции нельзя использовать вне тела функции, и, в частности, его нельзя использовать в значении по умолчанию для другого параметра.
Такой же эффект можно получить, перегрузив:
template <typename T>
void test ( typename TAs<T>::Type a1, typename TA<T>::Type a2);
template <typename T>
void test ( typename TAs<T>::Type a1)
{
test(a1, typename TA<T>::Type(a1.size()));
}