而具有不同版本的克++测试,下面的问题想出C++模板参数/类歧义
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
,而不是由克++ 4.1.2模板参数。另一方面,g ++ 4.3正确。
根据标准什么应该是正确的行为?
同时,我稍微重构使问题消失。
即使4.3正在做正确的事情,但不要重复名称可能是一个好主意,因为您会混淆读取代码的地狱。 – 2010-05-04 17:12:39
@那是重构的一部分。我正在清理一些头脑风暴活动 – Anycorn 2010-05-04 17:16:06
GCC4.5是固定的,并且像4.1一样,至少在我的测试中。 – 2010-05-04 17:25:21