Ваша вторая команда (с -std = c ++ 0x) верна, как и ваш тестовый пример. Возможно, вы используете версию clang до ее поддержки псевдонимов шаблонов. Вы можете проверить это, выполнив:
#if __has_feature(cxx_alias_templates)
Вот полный список макросов тестирования функций, которые использует clang:
http://clang.llvm.org/docs/LanguageExtensions.html#checking_upcoming_features
Вот один, несколько неприятный, способ справиться с переходным периодом между поддержкой псевдонимов шаблонов, а не:
#include <vector>
using namespace std;
#if __has_feature(cxx_alias_templates)
template<typename T>
using DoubleVec = vector<vector<T>>;
#else
template<typename T>
struct DoubleVec {
typedef vector<vector<T> > type;
};
#endif
int main()
{
#if __has_feature(cxx_alias_templates)
DoubleVec<int> v;
#else
DoubleVec<int>::type v;
#endif
}