不同编译器在将模板参数替换为已知值到typedef时的行为不一致问题咨询
不同编译器在将模板参数替换为已知值到typedef时的行为不一致问题咨询
各位好,我最近写C++类模板代码的时候碰到了个头疼的问题,不同编译器处理起来居然不一样,想过来请教下大家:
先跟大伙说下我的代码背景哈,这段代码虽说算不上什么理想实现,但确实能引出个有意思的情况:
- 我定义了一个带多个
bool类型模板参数的类模板,它的不同特化版本功能上稍有区别,其中有一个特化是不合法的 - 最开始我把主模板的定义设成了所有模板参数都为
false的那个特化版本 - 每个合法的特化版本里都声明了一个
typedef——this_type,它指代的就是该特化类本身
现在的问题是,当我把模板参数替换成具体的已知值、关联到this_type的时候,不同编译器的行为居然不一致:有的编译器能正常通过编译,有的却直接抛出了错误。我翻了下相关的标准内容,但还是没太搞明白,想问问这是C++标准里存在模糊地带,还是某些编译器的实现有问题呀?
内容来源于stack exchange
相关产品推荐
相关产品推荐

