小编Jac*_*son的帖子

分析C++编译过程

我倾向于编写相当大的模板化标头C++库,我的用户通常会抱怨编译时间.在想到这件事之后,我突然意识到我不知道时间会在哪里.是否有一些简单的方法来使用常见的编译器(例如g ++,icc和xlC)来分析C++编译过程?例如,是否可以了解在C++编译的每个阶段花费了多少时间?

c++ profiling compilation

75
推荐指数
5
解决办法
1万
查看次数

模板类的模板化构造函数的显式实例化

我不确定它是否是Clang 3.2中的错误或违反C++ 03,但似乎模板类的模板化构造函数的显式实例化失败,但模板类的模板化成员函数的显式实例化成功.

例如,以下编译没有clang ++和g ++的问题:

template<typename T>
class Foo
{
public:
    template<typename S>
    void Bar( const Foo<S>& foo )
    { }
};
template class Foo<int>;
template class Foo<float>;

template void Foo<int>::Bar( const Foo<int>& foo );
template void Foo<int>::Bar( const Foo<float>& foo );
template void Foo<float>::Bar( const Foo<int>& foo );
template void Foo<float>::Bar( const Foo<float>& foo );
Run Code Online (Sandbox Code Playgroud)

而以下编译没有使用g ++警告但使用clang ++失败:

template<typename T>
class Foo
{
public:
    template<typename S>
    Foo( const Foo<S>& foo )
    { }
};
template class Foo<int>;
template …
Run Code Online (Sandbox Code Playgroud)

c++ clang explicit-instantiation clang++

11
推荐指数
1
解决办法
2711
查看次数