在使用不同版本的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/