Add MTP::Sender to replace RPCSender some day.

Also use c++1z language standard in Xcode build.
Also treat warnings as errors.
This commit is contained in:
John Preston
2017-03-22 18:38:40 +03:00
parent 7fcc5d649c
commit e9ec09b91a
15 changed files with 449 additions and 78 deletions
+4 -4
View File
@@ -335,12 +335,12 @@ public:
}
// Copy / move construct / assign from an arbitrary type.
template <typename Lambda>
template <typename Lambda, typename = decltype(std::declval<Lambda>()(std::declval<Args>()...))>
lambda_once(Lambda other) {
data_.vtable = &lambda_internal::vtable_once<Lambda, Return, Args...>::instance;
lambda_internal::vtable_once<Lambda, Return, Args...>::construct_move_lambda_method(data_.storage, &other);
}
template <typename Lambda>
template <typename Lambda, typename = decltype(std::declval<Lambda>()(std::declval<Args>()...))>
lambda_once &operator=(Lambda other) {
if (data_.vtable) {
data_.vtable->destruct(data_.storage);
@@ -414,11 +414,11 @@ public:
}
// Copy / move construct / assign from an arbitrary type.
template <typename Lambda>
template <typename Lambda, typename = decltype(std::declval<Lambda>()(std::declval<Args>()...))>
lambda(Lambda other) : Parent(&lambda_internal::vtable<Lambda, Return, Args...>::instance, typename Parent::Private()) {
lambda_internal::vtable<Lambda, Return, Args...>::construct_move_lambda_method(this->data_.storage, &other);
}
template <typename Lambda>
template <typename Lambda, typename = decltype(std::declval<Lambda>()(std::declval<Args>()...))>
lambda &operator=(Lambda other) {
if (this->data_.vtable) {
this->data_.vtable->destruct(this->data_.storage);