auto a = (Foo<T>*)malloc(sizeof(Foo<T>));
auto *b = (Foo<T>*)malloc(sizeof(Foo<T>));
Run Code Online (Sandbox Code Playgroud)
我不认为模板是存在的,但问题是它的重要的:是a和b相同类型的?
g++ -std=c++0x -Wall (4.4)没有给出任何错误或警告,但我没有运行程序,所以我不知道它是否做同样的事情.
这是否意味着a,auto是Foo<T>*,但是b,auto是Foo<T>吗?
fre*_*low 12
是
a和b同一类型?
让我们找出来,好吗?
#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
Run Code Online (Sandbox Code Playgroud)
这样编译时没有静态断言失败.
这是否意味着
a,auto是Foo<T>*,但是b,auto是Foo<T>吗?
是.
| 归档时间: |
|
| 查看次数: |
1728 次 |
| 最近记录: |