在使用不同版本的g++进行测试时,出现了以下问题

template<class bra>
struct Transform<bra, void> : kernel::Eri::Transform::bra {
        static const size_t ni = bra::A::size;
bra::A解释为kernel::Eri::Transform::bra::A,而不是g++ 4.1.2的模板参数。另一方面,g++ 4.3正确无误。

按照标准应该是正确的行为是什么?

同时,我稍微进行了重构以使问题消失。

最佳答案

在我看来像gcc 4.1.2是正确的。 §14.6.1/ 7(ISO / IEC 14882,C++ 03):

关于c++ - C++模板参数/类的歧义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2767329/

10-12 15:06