繁体   English   中英

这两个typedef有什么区别?

[英]What's the difference between these two typedefs?

下面代码中两条标记线之间有什么区别?

template <const char *N> struct A {
    static const char *p;
    };

template <class T> struct B {
    static const char c[1];
    typedef A<B<T>::c> C;   // <---
    // typedef A<c> C;      // <---
    };

我收到的错误是:

test_t.C:在'const char B :: c [1]'的实例化中:
test_t.C:7:从这里实例化
test_t.C:7:内部编译器错误:在instantiate_decl中,在cp / pt.c:15628
请提交完整的错误报告,
如果合适,使用预处理的来源。
有关说明,请参阅http://gcc.gnu.org/bugs.html

“内部编译器错误”粗略地翻译为“你可能提供了破碎的代码,或者合理但令人困惑的代码。无论哪种方式,你都没有运气。请获得下一个版本并希望获得最佳版本。”

您的编译器有错误,无法编译第一个表单。

由于这两个表单是等效的,因此您可以使用第二个表单来解决错误。 也许值得尝试更新的编译器版本(如果有的话)来查看错误是否已修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM