例如,C 0x auto关键字的含义是什么?

例如,C 0x auto关键字的含义是什么?,第1张

概述auto a = (Foo<T>*)malloc(sizeof(Foo<T>));auto *b = (Foo<T>*)malloc(sizeof(Foo<T>)); 我不认为模板存在很重要,但问题是:a和b是同一类型吗? g -std = c 0x -Wall(4.4)没有给出任何错误或警告,但我没有运行程序所以我不知道它是否做同样的事情. 这是否意味着对于a,auto是Foo< T> *,但
auto a = (Foo<T>*)malloc(sizeof(Foo<T>));auto *b = (Foo<T>*)malloc(sizeof(Foo<T>));

我不认为模板存在很重要,但问题是:a和b是同一类型吗?

g -std = c 0x -Wall(4.4)没有给出任何错误或警告,但我没有运行程序所以我不知道它是否做同样的事情.

这是否意味着对于a,auto是Foo< T> *,但对于b,auto是Foo< T>?

解决方法

are a and b of the same type?

让我们找出来,好吗?

#include <cstdlib>#include <type_traits>template <typename T>struct Foo{    T member;};template <typename T>voID test(){    auto  a = (Foo<T>*)malloc(sizeof(Foo<T>));    auto *b = (Foo<T>*)malloc(sizeof(Foo<T>));    static_assert(std::is_same<decltype(a),decltype(b)>::value,"same type");}template voID test<int>();   // explicit instantiation

这样编译时没有静态断言失败.

Does this mean that for a,auto is Foo<T>*,but for b,auto is Foo<T>?

是.

总结

以上是内存溢出为你收集整理的例如,C 0x auto关键字含义是什么?全部内容,希望文章能够帮你解决例如,C 0x auto关键字的含义是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1221875.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存