嵌套模板的模板参数推导问题:MSVC编译失败Clang正常
MSVC下模板类嵌套视图的模板参数推导问题
我尝试让以下表达式自动推导view的模板参数:
object<bool> object; object<bool>::view view = object.make_view(std::string("compA"), std::string("compB")); // 而非显式指定模板参数 // object<bool>::view<false, 2> view = object.make_view(std::string("compA"), std::string("compB"));
对应的实现代码如下:
template <typename owner_t> struct object { template <bool const_v, std::size_t component_v> struct view { using object_t = std::conditional_t<const_v, const object, object>; object_t& object; std::array<std::string, component_v> components; template <typename... components_t> inline view(object_t& object, components_t&&... components) : object(object), components {std::forward<components_t>(components)...} { } }; template <typename... components_t> view(const object&, components_t&&...) -> view<true, sizeof...(components_t)>; template <typename... components_t> view(object&, components_t&&...) -> view<false, sizeof...(components_t)>; template <typename... components_t> inline auto make_view(components_t&&... components) { return view { *this, std::forward<components_t>(components)..., }; } };
这段代码在Clang中可正常编译,但在MSVC中无法编译。若移除owner模板参数,将object改为普通非模板类型,代码即可正常编译。请问是否有人遇到过该问题并找到了解决方案?
内容的提问来源于stack exchange,提问作者Jazzwave06
相关产品推荐
相关产品推荐

