I tried to compile the following snippets with gcc4.7
vector > vp = {{1,\'a\'},{2,\'b\'}};
//For pair vector, it works like a char
The relevant std::tuple constructors are explicit. This means that what you want to do is not possible, since the syntax you want to use is defined in terms of copy initialization (which forbids calling an explicit constructor). In contrast, std::tuple uses direct initialization. std::pair does have non-explicit constructors only.
Either use direct-initialization or one of the Standard tuple factory function (e.g. std::make_tuple).