我正在尝试在 Visual Studio 2017 中编译以下代码:
#include <future>
int main()
{
std::promise<std::reference_wrapper<int>> promise;
(void)promise;
}
但是,我收到以下错误:
error C2512: 'std::reference_wrapper': no appropriate default constructor available
而它在 GCC 和 Clang 上编译得很好。
这是 Visual Studio 中的明确错误还是 std::promise 的有效实现?
最佳答案
看起来是一个 known issue在 MSVC 的标准库实现中。 更简单的复现场景:
#include <future>
struct NoDefaultCtor
{
NoDefaultCtor() = delete;
};
int main() {
std::promise<NoDefaultCtor> p;
return 0;
}
关于c++ - std::promise<T> 其中 T 在 Visual Studio 2017 中必须是默认可构造的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49830864/