gpt4 book ai didi

c++ - 使用花括号而不是括号时 Visual Studio 会中断

转载 作者:行者123 更新时间:2023-12-02 14:33:16 25 4
gpt4 key购买 nike

我有以下 std::make_unique 包装:

template <typename Element, typename... ArgTypes>
auto makeUnique(ArgTypes&&... arguments) {
return std::make_unique<Element>(std::forward<ArgTypes>(arguments)...);
}

这样使用:

template <typename F>
static auto createCustomValidator(F &&validator) {
auto func = [validator = std::forward<F>(validator)](const int val){ return validator(seconds(val)); };
return makeUnique<property::CustomDoubleValidator<decltype(func)>>( std::move(func) );
}

早期版本的 Visual Studio 接受以下内容:

return makeUnique<property::CustomDoubleValidator<decltype(func)>>{ std::move(func) };

(注意 std::move 周围的大括号)

Visual Studio 16.5 打破了这一点,只能用括号而不是大括号来修复。哪一个是正确的?

最佳答案

makeUnique<property::CustomDoubleValidator<decltype(func)>>是一个函数,所以必须用括号调用。正确答案肯定是括号。

以前版本的 Visual Studio 可能接受大括号作为扩展。

关于c++ - 使用花括号而不是括号时 Visual Studio 会中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61076520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com