c++ 使用MSVC 2022中的std::enable_if_t引用模板参数中的auto

tcomlyy6  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(161)

我有一个代码,我可以编译没有任何问题的GCC 10。不幸的是,这不是情况,如果我使用Visual Studio 2022。代码完全基于模板(我确实喜欢那些模板)。
为了优化正确类的选择,我在模板声明中使用了std::enable_if_t,问题似乎来自引用的auto模板成员的演绎。

template<auto& _target,
         auto& _modifier,
         typename out_state, // Class for the outstate
         class actions = p::fsmm::will<fdefault<p::actions::nothing>>,
         std::enable_if_t<std::is_base_of_v<p::modifier, std::decay_t<decltype(_modifier)>>, void*> = nullptr >
class test {
};

此代码段生成的错误为:

Severity    Code    Description Project File    Line    Suppression State
Error   C2065   '_modifier': undeclared identifier

有什么想法吗?

fae0ux8s

fae0ux8s1#

谢谢你的评论。我试过用Clang而不是MSVC,我不需要做任何改变。

相关问题