我有以下关于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破坏了这个,只能用圆括号而不是花括号来修复。哪一个是正确的?