[Development] How to make a fancy QMap c++17 initializer_list

Henry Skoglund fromqt at tungware.se
Mon Jul 24 06:32:12 CEST 2017


Hello, I've been testing more C++17 class template auto deduction awith 
gcc-7, and got stuck on QMap, consider this simple test program:

-------------------------------------------------------------
#include "qapplication.h"
#include "qmap.h"
#include "qdebug.h"

int main(int argc, char *argv[])
{
     QApplication a(argc, argv);

     QMap m = {std::pair{2,"score"}, {4,"seven"}, {1,"Four"}, 
{5,"years"}, {3,"and"}, {6,"ago"}};

     for (auto v : m)
         qDebug() << v;
}
-------------------------------------------------------------

I really would like to just write a {{Key,T}..} list but it will not 
compile. As a kludge/compromise it works if I write "std::pair" around 
the first {} pair, to force the compiler to see it my way. Then the 
speech of Mr. Lincoln comes out fine.

In C++17 you should be able to fix this through a "User-defined 
deduction guide" to help the compiler. I've been trying various template 
one-liners but alas, I think my brain is too small. Anyone got a clue?

Rgrds Henry




More information about the Development mailing list