#ifndef QT_NO_EXCEPTIONS
void exceptions();
#endif
+#ifdef Q_COMPILER_DECLTYPE
void functor();
+#endif
+#ifdef Q_COMPILER_LAMBDA
void lambda();
+#endif
};
void light()
}
#endif
+#ifdef Q_COMPILER_DECLTYPE
+// Compiler supports decltype
struct Functor {
int operator()() { return 42; }
double operator()(double a, double b) { return a/b; }
// This tests functor without result_type; decltype need to be supported by the compiler.
void tst_QtConcurrentRun::functor()
{
-#ifndef Q_COMPILER_DECLTYPE
- QSKIP("Compiler does not support decltype");
-#else
Functor f;
{
QFuture<int> fut = QtConcurrent::run(f);
QtConcurrent::run(f, 1,2,3,4).waitForFinished();
QtConcurrent::run(f, 1,2,3,4,5).waitForFinished();
}
-#endif
}
+#endif
+#ifdef Q_COMPILER_LAMBDA
+// Compiler supports lambda
void tst_QtConcurrentRun::lambda()
{
-#ifndef Q_COMPILER_LAMBDA
- QSKIP("Compiler does not support lambda");
-#else
QCOMPARE(QtConcurrent::run([](){ return 45; }).result(), 45);
QCOMPARE(QtConcurrent::run([](int a){ return a+15; }, 12).result(), 12+15);
QCOMPARE(QtConcurrent::run([](int a, double b){ return a + b; }, 12, 15).result(), double(12+15));
QCOMPARE(r, QStringList({"Hello", "World", "Foo"}));
}
#endif
-#endif
}
+#endif
QTEST_MAIN(tst_QtConcurrentRun)
#include "tst_qtconcurrentrun.moc"