我有一个代码,我可以编译没有任何问题的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
有什么想法吗?
1条答案
按热度按时间fae0ux8s1#
谢谢你的评论。我试过用Clang而不是MSVC,我不需要做任何改变。