【发布时间】:2011-01-02 21:49:03
【问题描述】:
我只是尝试了解以下情况的行为:
template <typename T1>
struct A{
template <typename T2>
A(T2 val){
cout<<"sizeof(T1): "<<sizeof(T1)<<" sizeof(T2): "<<sizeof(T2)<<endl;
}
T1 dummyField;
};
so - 类使用 T1 模板化,构造函数使用 T2 模板化
现在 - 如果我写:
A<bool> a = A<bool>(true);
输出如预期:
sizeof(T1): 1 sizeof(T2): 1
但是 - 如果我写:
A<bool> a = A<float>(3.5f);
输出是:
sizeof(T1): 4 sizeof(T2): 4
sizeof(T1): 1 sizeof(T2): 4
为什么用模板参数float调用构造函数两次?
谢谢你满足我的好奇心
【问题讨论】:
标签: c++ templates constructor