非模板类中模板函数的内存模型
Memory model of template function inside non-template class?
假设我有:
template <typename T>
class A
{
//Do something with T
};
我知道编译器会为代码中定义的每个不同的T
生成一个class A<T>
。
如果我有:
class B
{
template <typename T>
void f() { /* Do something with T */ }
};
是否只有一个class B
的定义,但对于每个不同的T
,都有多个f()
的重载?
是的,每次实例化f<T>
时,编译器都会生成f()
的定义
根据编译器的不同,f()
可以通过内联进行优化,也可以只在代码段中获得那么多空间。
然而,我很少遇到这样的设计,即在非模板类中有一个非静态模板成员函数(没有任何参数!)。
相关文章:
- C++内存模型和位字段的最大序列
- C++内存模型中的确切规则阻止在获取操作之前重新排序
- 内存模型和并发
- 目标c是否需要一个标准来定义像c++11这样的内存模型
- 内存模型:激活记录
- 为什么 C++/Java 内存模型不包含条件变量
- C 中的内存模型:为什么在同一内存位置分配了结构中的两个整数
- C 内存模型是否提供了有关构造函数操作的保证
- 性能与C 内存模型
- C++内存模型——这个例子包含数据竞赛吗
- 关于C++11内存模型的奇怪结果(放松排序)
- Cocos2d-x自定义内存模型的优点是什么
- C++编译器如何支持C++11原子,但不支持C++11内存模型
- C++11 内存模型是否可以防止内存撕裂和冲突?
- 具有强内存模型的平台上的易失性和多线程
- 对C++11内存模型有什么好的解释
- 非模板类中模板函数的内存模型
- 并发:用于多线程环境中共享变量的C++11内存模型
- 原子负载是否可以合并到C++内存模型中
- 理解c++内存模型:不同的运行值不同