[DEV] change to build on C++11

This commit is contained in:
Edouard DUPIN 2016-02-22 21:58:56 +01:00
parent e5989608b8
commit 20797c0e97
3 changed files with 51 additions and 40 deletions

View File

@ -163,8 +163,8 @@ namespace esignal {
*/
template<class classType, class Func, class... Arg>
Connection connect(classType* _class, Func _func, Arg... _arg) {
std::unique_ptr<Executor> executer(new Executor([=]( auto&&... cargs ){
(*_class.*_func)(cargs..., _arg... );
std::unique_ptr<Executor> executer(new Executor([=](const Args& ... _argBase){
(*_class.*_func)(_argBase..., _arg... );
}));
std::size_t uid = executer->m_uid;
m_executors.push_back(std::move(executer));
@ -184,9 +184,9 @@ namespace esignal {
return;
}
TYPE* directPointer = obj2.get();
std::unique_ptr<ExecutorShared> executer(new ExecutorShared(_class, [=]( auto&&... cargs ){
std::unique_ptr<ExecutorShared> executer(new ExecutorShared(_class, [=]( const Args& ... _argBase){
// TODO : Check if compilator does not use the shared ptr ...
(*directPointer.*_func)(cargs..., _args... );
(*directPointer.*_func)(_argBase..., _args... );
}));
m_executors.push_back(std::move(executer));
}

View File

@ -47,7 +47,7 @@ def create(target, module_name):
'esignal/Connection.h',
'esignal/details/Signal.hxx',
])
my_module.compile_version("c++", 2014)
my_module.compile_version("c++", 2011)
my_module.add_module_depend(['etk'])
my_module.add_path(tools.get_current_path(__file__))
my_module.compile_flags('c++', [

View File

@ -166,13 +166,13 @@ TEST(test_signal_static_func, localFunctionMixedIntString) {
EXPECT_EQ(tmpRetString, "plTGY");
}
#if __CPP_VERSION__ >= 2014
template<class Func, class... Arg>
auto complete_args(Func _f, Arg... _arg) {
return [=]( auto&&... cargs ){
return _f( cargs..., _arg... );
};
}
TEST(test_signal_static_func, localFunctionConstIntStringPolyArg) {
clear();
esignal::Signal<int32_t, std::string> signal;
@ -185,6 +185,16 @@ TEST(test_signal_static_func, localFunctionConstIntStringPolyArg) {
EXPECT_EQ(tmpRetInt32, 246 + 12365);
EXPECT_EQ(tmpRetString, "plop567c");
}
#else
/*
template<class Func, class... ARGS_BASE, class... ARGS_CURR>
std::function<void(const ARGS_BASE&...)> complete_args(Func _f, ARGS_BASE... _arg) {
return [=](const ARGS_BASE&..., ARGS_CURR...){
return _f( cargs..., _arg... );
};
}
*/
#endif
#if 0
TEST(test_signal_static_func, localFunctionConstIntStringPolyArgWithJAJA) {
@ -275,7 +285,7 @@ TEST(test_signal_static_func, connect_disconnect_multiple) {
EXPECT_EQ(signal.empty(), false);
}
#if __CPP_VERSION__ >= 2014
static void callbackDisconnect(esignal::Connection* _connection) {
_connection->disconnect();
}
@ -291,4 +301,5 @@ TEST(test_signal_static_func, disconnect_inCallback) {
EXPECT_EQ(signal.size(), 0);
EXPECT_EQ(signal.empty(), true);
}
#endif