
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
aandbof 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,autoisFoo<T>*,but forb,autoisFoo<T>?
是.
总结以上是内存溢出为你收集整理的例如,C 0x auto关键字的含义是什么?全部内容,希望文章能够帮你解决例如,C 0x auto关键字的含义是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)