模板化库代码中缺少编译器警告

时间:2017-02-14 08:40:06

标签: c++ clang compiler-warnings

以下代码使用clang 3.9发出(正确)警告:

#include <warning_global_symlink.hpp>
#include "warning_local_symlink.hpp"

int main( int argc, char* argv[] )
{   
    // This line shows no warning whatsoever.     
    WarningGlobalSymlink< int > symlink;

    // This line correctly shows the warning
    WarningLocalSymlink< int > local;
}

每个* _symlink.hpp都是一个符号链接,指向包含以下内容的标题:

#pragma once

template < typename T >
class Warning*Symlink
{
  public:
    Warning*Symlink()
    {
        init();
    }

    bool init()
    {
        // I will trigger a warning because of missing return!
    }
};

有趣的是,全局符号链接标题并未显示警告。全局类位于另一个被编译为依赖项的cmake项目中。

是否有可能在全局符号链接标题中显示警告?

注意:

1)如果全局标题被复制而不是符号链接,那么一切都按预期工作。

2)使用本地符号链接标题,所有内容都可以正常工作。

0 个答案:

没有答案