在依赖限定类型的typename上,为了使vc++和g++表现相同,可以采取以下方法:
template<typename T>
using TypeAlias = typename T::type;
然后,在代码中使用TypeAlias来代替typename,以实现在vc++和g++上的一致性。
template<typename T>
struct TypeWrapper {
using Type = typename T::type;
};
// 在vc++上进行特化
template<typename T>
struct TypeWrapper<T*> {
using Type = T;
};
在代码中使用TypeWrapper来替代typename,以实现在vc++和g++上的一致性。
需要注意的是,以上方法只是一种尝试,具体的实现方式可能会因编译器版本、编译选项等因素而有所不同。在实际使用中,建议根据具体情况进行测试和调整。
领取专属 10元无门槛券
手把手带您无忧上云