当前位置:  开发笔记 > 编程语言 > 正文

仅标头模板的显式实例化声明(extern模板)

如何解决《仅标头模板的显式实例化声明(extern模板)》经验,为你挑选了0个好方法。

我正在努力加快GLM(OpenGL数学)的编译时间.GLM大量使用C++模板.

这是我到目前为止所尝试的.

math.h
#pragma once

#include 
extern template struct glm::tvec3;

math.cpp
#include "math.h"
template struct glm::tvec3;

然后我有三个使用glm::vec3模板的文件,glm::vec3是一个typedef glm::tvec3.这三个文件a,b,c看起来几乎相同:

a.cpp, b.cpp, c.cpp
#include "math.h"
glm::vec3 func() {
    glm::vec3 a = glm::vec3{1,1,1};
    glm::vec3 b = glm::vec3{1,1,1};
    return a + b;
}

我正在使用显式实例化定义和显式实例化声明.所以文件a,b,c不应该导致隐式实例化.但编译时间和我不这样做的时间相同.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有