昨天有对模板类的函数成员特化需求,目的是为了对不同模板参数实现不同的操作,结果在写过程中碰到already defined的问题(貌似是模板新手最容易碰到的问题了),类外的成员函数和同在类外的特化版本成员函数冲突了。因为对模板用法不是很熟悉,找了半天发现网上一段对话:
gcc下面,判断函数是不是内联,是看函数实现的地方的,类里面的函数,在gcc开启优化的时候,会自动加上inline,如果在类里面实现,那就可能是inline函数,如果在类外实现那就基本不会是inline(除非开O3)
普通函数我是在类里面实现的,特化函数在类外面实现,不加inline编译不过,说重定义了
这里说到一点就是未特化的模板函数是放在类定义里面用inline实现的,然后