查看模板实例化(c++) 10

一个模板函数,有什么方法可以看到这个模板函数都在哪里实例化了,以及都用了什么模板参数进行实例化... 一个模板函数,有什么方法可以看到这个模板函数都在哪里实例化了,以及都用了什么模板参数进行实例化 展开
 我来答
温柔攻203x
2014-09-13 · 超过54用户采纳过TA的回答
知道答主
回答量:170
采纳率:100%
帮助的人:100万
展开全部
其实无非两种,一种是具体化(又叫偏特化)一种是实例化(又叫全特话),对于具体化,就是
对模板的范围进一步压缩,并给这个更小的范围从新定义类成员(包括数据成员和方法)。对于实例化就是直接生成模板中某种实例(注意:同时给一个模板生成同一个实例化和具体化将报错)。举例:
#include<iostream>
#include<cstdio>
#include<stdlib.h>
using namespace std;
template <typename T1,typename T2>//#1
class A
{
int a;
public:
A (){cout<<"this is A<T1,T2> default constructor function!\n";}
};
template <typename T1>
class A<T1,int>//部分的具体化 #2
{
int b;
public:
A (){cout<<"this is A<T1,int> default constructor function!\n";}
};
template class A<int,char>;//显示的实例化,将直接生成该类型类定义
int main()
{
class A<int ,int> a;//隐式实例化 ,将隐式生成#2 的实例
class A<int ,char> b; //隐式实例化,将隐式生成#1的实例
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-09-13
展开全部
gcc的话可以用编译选项 -repo 生成一个rpo文件
更多追问追答
追问
没有这个选项吧,查不到啊,而且加上之后编译出错
追答
  1. 确定你用的是 gcc

  2. gcc 用了 -repo 之后,连接器必然报错,也就是说不可能生成可执行程序。毕竟你的目的是看到模板的所有实例化,而不是生成可执行程序

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式