C++ then for std::future的实现导致编译错误

C++ then for std::future的实现导致编译错误,c++,c++11,visual-studio-2013,C++,C++11,Visual Studio 2013,当我尝试编译此实现Visual Studio 2013 Update 3时,编译器说我引用了std::future #include <iostream> #include <stdexcept> #include <utility> #include <chrono> #include <future> #include <thread> template <typename T, typename Func>

当我尝试编译此实现Visual Studio 2013 Update 3时,编译器说我引用了
std::future

#include <iostream>
#include <stdexcept>
#include <utility>
#include <chrono>
#include <future>
#include <thread>

template <typename T, typename Func>
auto then(std::future<T> future, Func func) -> std::future<decltype(func(future))>
{
    return std::async([] (std::future<T> future, Func func) {
        future.wait();
        func(std::move(future));
    }, std::move(future), std::move(func));
}


int main()
{
    then(std::async([] {
        std::this_thread::sleep_for(std::chrono::seconds(4));
        return 5;
    }), [] (std::future<int> f) {
        std::cout << f.get();
    }).get();
}
#包括
#包括
#包括
#包括
#包括
#包括
模板
自动然后(std::future,Func Func)->std::future
{
返回std::async([](std::future,Func-Func){
未来。等待();
func(标准::移动(未来));
},std::move(future),std::move(func));
}
int main()
{
然后(std::async([]{
std::this_thread::sleep_for(std::chrono::seconds(4));
返回5;
}),[](标准::未来f){
std::cout-----已启动构建:项目:临时,配置:调试Win32------
1> 临时cpp
1> c:\program files(x86)\microsoft visual studio 12.0\vc\include\xrefwrap(58):错误C2280:'std::future::future(const std::future&'):尝试引用已删除的函数
1> 与
1>          [
1> _Fty=main::
1>          ]
1> c:\ProgramFiles(x86)\microsoft visual studio 12.0\vc\include\future(1140):请参阅“std::future::future”的声明
1> 与
1>          [
1> _Fty=main::
1>          ]
1> c:\program files(x86)\microsoft visual studio 12.0\vc\include\xrefwrap(118):请参阅正在编译的类模板实例化“std::\u Result\u of”的参考
1> 与
1>          [
1> 那么:
1>          ]
1> c:\ProgramFiles(x86)\microsoft visual studio 12.0\vc\include\functional(975):请参阅正在编译的类模板实例化“std::result\u of”的参考
1> 与
1>          [
1> _Funx=然后::
1> ,_Fty=main::
1>          ]
1> c:\program files(x86)\microsoft visual studio 12.0\vc\include\xrefwrap(283):请参阅正在编译的类模板实例化“std::\u Do\u call\u ret”的参考
1> 与
1>          [
1> _Ret=无效
1> ,_Fty=main::
1>          ]
1> c:\ProgramFiles(x86)\microsoft visual studio 12.0\vc\include\functional(228):请参阅正在编译的函数模板实例化“\u Ret std::\u Callable\u obj::\u ApplyX(void)”的参考
1> 与
1>          [
1> _Ret=无效
1> ,_Ty=then::
1> ,_Fty=main::
1> ,_Rx=无效
1>          ]
1> c:\ProgramFiles(x86)\microsoft visual studio 12.0\vc\include\functional(228):请参阅正在编译的函数模板实例化“\u Ret std::\u Callable\u obj::\u ApplyX(void)”的参考
1> 与
1>          [
1> _Ret=无效
1> ,_Ty=then::
1> ,_Fty=main::
1> ,_Rx=无效
1>          ]
1> c:\program files(x86)\microsoft visual studio 12.0\vc\include\functional(226):编译类模板成员函数“void std::\u Func\u impl::\u Do\u call(void)”时
1> 与
1>          [
1> _Alloc=std::分配器
1> ,_Ret=void
1>          ]
1> c:\program files(x86)\microsoft visual studio 12.0\vc\include\functional(495):请参阅正在编译的类模板实例化“std::\u Func\u impl”的参考
1> 与
1>          [
1> _Alloc=std::分配器
1> ,_Ret=void
1>          ]
1> c:\program files(x86)\microsoft visual studio 12.0\vc\include\functional(396):请参阅正在编译的函数模板实例化“void std::_Func_class::_Do_alloc(_Fty&&,_alloc)”的参考
1> 与
1>          [
1> _Ret=无效
1> ,_Ty=std::_Bind
1> ,_Alloc=std::分配器
1> ,_Fty=std::_Bind
1>          ]
1> c:\program files(x86)\microsoft visual studio 12.0\vc\include\functional(396):请参阅正在编译的函数模板实例化“void std::_Func_class::_Do_alloc(_Fty&&,_alloc)”的参考
1> 与
1>          [
1> _Ret=无效
1> ,_Ty=std::_Bind
1> ,_Alloc=std::分配器
1> ,_Fty=std::_Bind
1>          ]
1> c:\program files(x86)\microsoft visual studio 12.0\vc\include\functional(385):请参阅正在编译的函数模板实例化“void std::_Func_class::_Reset_alloc(_Fty&&,_alloc)”的参考
1> 与
1>          [
1> _Ret=无效
1> ,_Ty=std::_Bind
1> ,_Fty=std::_Bind
1> ,_Alloc=std::分配器
1>          ]
1> c:\program files(x86)\microsoft visual studio 12.0\vc\include\functional(385):请参阅正在编译的函数模板实例化“void std::_Func_class::_Reset_alloc(_Fty&&,_alloc)”的参考
1> 与
1>          [
1> _Ret=无效
1> ,_Ty=std::_Bind
1> ,_Fty=std::_Bind
1> ,_Alloc=std::分配器
1>          ]
1> c:\ProgramFiles(x86)\microsoft visual studio 12.0\vc\include\functional(671):请参阅正在编译的函数模板实例化“void std::_Func_class::_Reset(_Fty&&)”的参考
1> 与
1>          [
1> _Ret=无效
1> ,_Ty=std::_Bind
1> ,_Fty=std::_Bind
1>          ]
1> c:\ProgramFiles(x86)\microsoft visual studio 12.0\vc\include\functional(671):请参阅正在编译的函数模板实例化“void std::_Func_class::_Reset(_Fty&&)”的参考
1> 与
1>          [
1> _Ret=无效
1> ,_Ty=std::_Bind
1> ,_Fty=std::_Bind
1>          ]
1> c:\ProgramFiles(x86)\microsoft visual studio 12.0\vc\include\future(735):请参阅正在编译的函数模板实例化“std::function::function(_Fx&&)”的参考
1> 与
1>          [
1> _Ty=std::_Bind
1> ,_Fx=std::_Bind
1>          ]
1> c:\ProgramFiles(x86)\microsoft visual studio 12.0\vc\include\future(735):请参阅正在编译的函数模板实例化“std::function::function(_Fx&&)”的参考
1>
1>------ Build started: Project: temp, Configuration: Debug Win32 ------
1>  temp.cpp
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\xrefwrap(58): error C2280: 'std::future<std::_Result_of<_Fty,>::type>::future(const std::future<std::_Result_of<_Fty,>::type> &)' : attempting to reference a deleted function
1>          with
1>          [
1>              _Fty=main::<lambda_671f15aca9913797c9b157283a9bc860>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\future(1140) : see declaration of 'std::future<std::_Result_of<_Fty,>::type>::future'
1>          with
1>          [
1>              _Fty=main::<lambda_671f15aca9913797c9b157283a9bc860>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\xrefwrap(118) : see reference to class template instantiation 'std::_Result_of<_Fty,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type> ,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f> &>' being compiled
1>          with
1>          [
1>              _Fty=then::<lambda_fce0ad2065944df99f1af1e657f83fe2>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(975) : see reference to class template instantiation 'std::result_of<_Funx (std::future<std::_Result_of<_Fty,>::type> ,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f> &)>' being compiled
1>          with
1>          [
1>              _Funx=then::<lambda_fce0ad2065944df99f1af1e657f83fe2>
1>  ,            _Fty=main::<lambda_671f15aca9913797c9b157283a9bc860>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\xrefwrap(283) : see reference to class template instantiation 'std::_Do_call_ret<false,_Ret,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::tuple<std::future<std::_Result_of<_Fty,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>,std::tuple<>,std::_Arg_idx<0,1>>' being compiled
1>          with
1>          [
1>              _Ret=void
1>  ,            _Fty=main::<lambda_671f15aca9913797c9b157283a9bc860>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(228) : see reference to function template instantiation '_Ret std::_Callable_obj<std::_Bind<false,_Ret,_Ty,std::future<std::_Result_of<_Fty,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>,false>::_ApplyX<_Rx,>(void)' being compiled
1>          with
1>          [
1>              _Ret=void
1>  ,            _Ty=then::<lambda_fce0ad2065944df99f1af1e657f83fe2>
1>  ,            _Fty=main::<lambda_671f15aca9913797c9b157283a9bc860>
1>  ,            _Rx=void
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(228) : see reference to function template instantiation '_Ret std::_Callable_obj<std::_Bind<false,_Ret,_Ty,std::future<std::_Result_of<_Fty,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>,false>::_ApplyX<_Rx,>(void)' being compiled
1>          with
1>          [
1>              _Ret=void
1>  ,            _Ty=then::<lambda_fce0ad2065944df99f1af1e657f83fe2>
1>  ,            _Fty=main::<lambda_671f15aca9913797c9b157283a9bc860>
1>  ,            _Rx=void
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(226) : while compiling class template member function 'void std::_Func_impl<_MyWrapper,_Alloc,_Ret,>::_Do_call(void)'
1>          with
1>          [
1>              _Alloc=std::allocator<std::_Func_class<void,>>
1>  ,            _Ret=void
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(495) : see reference to class template instantiation 'std::_Func_impl<_MyWrapper,_Alloc,_Ret,>' being compiled
1>          with
1>          [
1>              _Alloc=std::allocator<std::_Func_class<void,>>
1>  ,            _Ret=void
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(396) : see reference to function template instantiation 'void std::_Func_class<_Ret,>::_Do_alloc<_Myimpl,_Ty,_Alloc>(_Fty &&,_Alloc)' being compiled
1>          with
1>          [
1>              _Ret=void
1>  ,            _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Alloc=std::allocator<std::_Func_class<void,>>
1>  ,            _Fty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(396) : see reference to function template instantiation 'void std::_Func_class<_Ret,>::_Do_alloc<_Myimpl,_Ty,_Alloc>(_Fty &&,_Alloc)' being compiled
1>          with
1>          [
1>              _Ret=void
1>  ,            _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Alloc=std::allocator<std::_Func_class<void,>>
1>  ,            _Fty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(385) : see reference to function template instantiation 'void std::_Func_class<_Ret,>::_Reset_alloc<_Ty,std::allocator<std::_Func_class<_Ret,>>>(_Fty &&,_Alloc)' being compiled
1>          with
1>          [
1>              _Ret=void
1>  ,            _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Fty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Alloc=std::allocator<std::_Func_class<void,>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(385) : see reference to function template instantiation 'void std::_Func_class<_Ret,>::_Reset_alloc<_Ty,std::allocator<std::_Func_class<_Ret,>>>(_Fty &&,_Alloc)' being compiled
1>          with
1>          [
1>              _Ret=void
1>  ,            _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Fty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Alloc=std::allocator<std::_Func_class<void,>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(671) : see reference to function template instantiation 'void std::_Func_class<_Ret,>::_Reset<_Ty>(_Fty &&)' being compiled
1>          with
1>          [
1>              _Ret=void
1>  ,            _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Fty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(671) : see reference to function template instantiation 'void std::_Func_class<_Ret,>::_Reset<_Ty>(_Fty &&)' being compiled
1>          with
1>          [
1>              _Ret=void
1>  ,            _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Fty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\future(735) : see reference to function template instantiation 'std::function<void (void)>::function<_Ty>(_Fx &&)' being compiled
1>          with
1>          [
1>              _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Fx=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\future(735) : see reference to function template instantiation 'std::function<void (void)>::function<_Ty>(_Fx &&)' being compiled
1>          with
1>          [
1>              _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Fx=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\future(893) : see reference to function template instantiation 'std::_Packaged_state<_Rx (void)>::_Packaged_state<_Ty>(_Fty2 &&)' being compiled
1>          with
1>          [
1>              _Rx=_Ret
1>  ,            _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Fty2=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\future(893) : see reference to function template instantiation 'std::_Packaged_state<_Rx (void)>::_Packaged_state<_Ty>(_Fty2 &&)' being compiled
1>          with
1>          [
1>              _Rx=_Ret
1>  ,            _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Fty2=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\future(1859) : see reference to function template instantiation 'std::_Task_async_state<_Ret,false>::_Task_async_state<_Ty>(_Fty2 &&)' being compiled
1>          with
1>          [
1>              _Ret=_Ret
1>  ,            _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Fty2=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\future(1859) : see reference to function template instantiation 'std::_Task_async_state<_Ret,false>::_Task_async_state<_Ty>(_Fty2 &&)' being compiled
1>          with
1>          [
1>              _Ret=_Ret
1>  ,            _Ty=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>  ,            _Fty2=std::_Bind<false,void,then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<main::<lambda_671f15aca9913797c9b157283a9bc860>,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\future(1880) : see reference to function template instantiation 'std::_Associated_state<int> *std::_Get_associated_state<_Ret,std::_Bind<false,void,_Ty,std::future<std::_Result_of<_Fty,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>>(std::_Launch_type,std::_Bind<false,void,_Ty,std::future<std::_Result_of<_Fty,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>> &&)' being compiled
1>          with
1>          [
1>              _Ty=then::<lambda_fce0ad2065944df99f1af1e657f83fe2>
1>  ,            _Fty=main::<lambda_671f15aca9913797c9b157283a9bc860>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\future(1897) : see reference to function template instantiation 'std::future<void> std::_Async<then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<_Fty,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>(std::_Launch_type,then::<lambda_fce0ad2065944df99f1af1e657f83fe2> &&,std::future<std::_Result_of<_Fty,>::type> &&,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f> &&)' being compiled
1>          with
1>          [
1>              _Fty=main::<lambda_671f15aca9913797c9b157283a9bc860>
1>          ]
1>          d:\...\temp.cpp(12) : see reference to function template instantiation 'std::future<void> std::async<then::<lambda_fce0ad2065944df99f1af1e657f83fe2>,std::future<std::_Result_of<_Fty,>::type>,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>(then::<lambda_fce0ad2065944df99f1af1e657f83fe2> &&,std::future<std::_Result_of<_Fty,>::type> &&,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f> &&)' being compiled
1>          with
1>          [
1>              _Fty=main::<lambda_671f15aca9913797c9b157283a9bc860>
1>          ]
1>          d:\...\temp.cpp(26) : see reference to function template instantiation 'std::future<void> then<std::_Result_of<_Fty,>::type,main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>>(std::future<std::_Result_of<_Fty,>::type>,Func)' being compiled
1>          with
1>          [
1>              _Fty=main::<lambda_671f15aca9913797c9b157283a9bc860>
1>  ,            Func=main::<lambda_94e6e075e2832fb9a811ae5846fdb72f>
1>          ]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
template <typename T, typename Func>
auto then(std::future<T> future, Func func) 
-> std::future<decltype(func(future))>
template <typename T, typename Func>
auto then(std::future<T> future, Func func) 
-> std::future<decltype(func(std::move(future)))>