I'm having some problems coping with this "uniform initialization"/"initialization list" example from Bjarne Stroustrup himself.

What bothers me is that the example does not work with tuples:

Code:
#include <string>

#include <list>
#include <tuple>
#include <utility>

//This works: Uniform initialization, normal
std::pair<std::string, std::string> a{"Nygaard","Simula"};
std::tuple<std::string, std::string> b{"Richards","BCPL"};

//This doesn't work, initialization lists, normal
//std::pair<std::string, std::string> aa{{"Nygaard","Simula"}};
//std::tuple<std::string, std::string> bb{{"Richards","BCPL"}};

//This works
std::list<std::pair<std::string, std::string>> languages_pair = {
    {"Nygaard","Simula"}, {"Richards","BCPL"}, {"Ritchie","C"}
};

//but this doesn't
std::list<std::tuple<std::string, std::string>> languages_tuple = {
    {"Nygaard","Simula"}, {"Richards","BCPL"}, {"Ritchie","C"}
};

int main()
{ }
I can't understand why the tuple example is not working :/

Which constructor are the pairs using that the tuple doesn't have?