草庐IT

c++ - 在默认初始化程序 gcc 与 clang 中使用 lambda

#include#includeintmain(){structpoint_of_cone{doublex,y;doublez=[&]{usingstd::sqrt;returnsqrt(x*x+y*y);}();};point_of_conep={3.0,4.0};assert(p.z==5.0);}对于来自主干的clang++工作正常,但对于来自主干的g++失败并显示错误消息(link):error:'this'wasnotcapturedforthislambdafunction在命名空间范围内定义point_of_cone对两者都适用。使用[this]lambda捕获稍作修改的

c++ - 在默认初始化程序 gcc 与 clang 中使用 lambda

#include#includeintmain(){structpoint_of_cone{doublex,y;doublez=[&]{usingstd::sqrt;returnsqrt(x*x+y*y);}();};point_of_conep={3.0,4.0};assert(p.z==5.0);}对于来自主干的clang++工作正常,但对于来自主干的g++失败并显示错误消息(link):error:'this'wasnotcapturedforthislambdafunction在命名空间范围内定义point_of_cone对两者都适用。使用[this]lambda捕获稍作修改的

c++ - Clang 和 GCC 在强制转换 C++17 中的非类型模板参数的自动说明符中存在分歧

我基本上有一个依赖于非类型模板参数的类。我定义了一个转换,因此非类型模板参数N的对象可以转换为另一个M。我有一个可以重现这种情况的最小示例:templateclassTest{public:typedefdecltype(Integral)value_type;staticconstexprvalue_typeN=Integral;constexprTest(constvalue_type&x=0);templateconstexprexplicitoperatorTest()const;private:value_typen;};templateconstexprTest::Test

c++ - Clang 和 GCC 在强制转换 C++17 中的非类型模板参数的自动说明符中存在分歧

我基本上有一个依赖于非类型模板参数的类。我定义了一个转换,因此非类型模板参数N的对象可以转换为另一个M。我有一个可以重现这种情况的最小示例:templateclassTest{public:typedefdecltype(Integral)value_type;staticconstexprvalue_typeN=Integral;constexprTest(constvalue_type&x=0);templateconstexprexplicitoperatorTest()const;private:value_typen;};templateconstexprTest::Test

c++ - GCC 和 clang (SFINAE) 之间的重载解析行为差异

GCC接受以下代码:templatestructmeta{typedeftypenameT::typetype;};structS{};templatetypenamemeta::typefoo(T,S);intfoo(int,int);intmain(){foo(0,0);}但是clang拒绝它并出现以下错误:test.cpp:4:22:error:type'int'cannotbeusedpriorto'::'becauseithasnomemberstypedeftypenameT::typetype;^test.cpp:10:10:note:ininstantiationoft

c++ - GCC 和 clang (SFINAE) 之间的重载解析行为差异

GCC接受以下代码:templatestructmeta{typedeftypenameT::typetype;};structS{};templatetypenamemeta::typefoo(T,S);intfoo(int,int);intmain(){foo(0,0);}但是clang拒绝它并出现以下错误:test.cpp:4:22:error:type'int'cannotbeusedpriorto'::'becauseithasnomemberstypedeftypenameT::typetype;^test.cpp:10:10:note:ininstantiationoft

c++ - 如果基类是成员函数的参数类型,是否需要指定基类的模板参数?

以下代码被VC++2013接受,但被clang3.4拒绝。哪个编译器符合C++标准?templatestructA{Tn;};templatestructB:A{//VC++2013:OK//clang:error:useofclasstemplate'A'requirestemplateargumentsB&f1(constA&obj){return*this;}//VC++:OK//clang:OKB&f2(constA&obj){return*this;}};intmain(){Bb;} 最佳答案 我的第一直觉是说VC++是正

c++ - 如果基类是成员函数的参数类型,是否需要指定基类的模板参数?

以下代码被VC++2013接受,但被clang3.4拒绝。哪个编译器符合C++标准?templatestructA{Tn;};templatestructB:A{//VC++2013:OK//clang:error:useofclasstemplate'A'requirestemplateargumentsB&f1(constA&obj){return*this;}//VC++:OK//clang:OKB&f2(constA&obj){return*this;}};intmain(){Bb;} 最佳答案 我的第一直觉是说VC++是正

c++ - 将 OpenMP 与 clang 一起使用

我在使用clang(3.6和3.8ToT)编译OpenMP代码时遇到问题。我关注了这篇博文http://blog.llvm.org/2015/05/openmp-support_22.html,但问题是编译后的程序只在一个线程上执行。我使用的是ubuntu15.04x64,我同时安装了libgomp和libiopmp,并使用以下命令编译我的代码:clangtest.c-otest-fopenmp-L/usr/lib/gcc/x86_64-linux-gnu/5.1.1当我改用gcc时,一切正常:gcctest.c-otest-fopenmp我也尝试运行exportLD_LIBRARY_

c++ - 将 OpenMP 与 clang 一起使用

我在使用clang(3.6和3.8ToT)编译OpenMP代码时遇到问题。我关注了这篇博文http://blog.llvm.org/2015/05/openmp-support_22.html,但问题是编译后的程序只在一个线程上执行。我使用的是ubuntu15.04x64,我同时安装了libgomp和libiopmp,并使用以下命令编译我的代码:clangtest.c-otest-fopenmp-L/usr/lib/gcc/x86_64-linux-gnu/5.1.1当我改用gcc时,一切正常:gcctest.c-otest-fopenmp我也尝试运行exportLD_LIBRARY_