草庐IT

inline-namespaces

全部标签

c++ - 用于在 C++ 中管理平台特定代码的内联命名空间技术

我见过使用#ifdef宏(例如Eigen库)来管理特定于平台的代码,但还没有看到有人使用“内联命名空间”来管理特定于平台的代码。下面的githubrepo给出了具体的代码和使用示例。https://github.com/dchichkov/curious-namespace-trick/wiki/Curious-Namespace-Trick我想知道这是否是一种可行的技术,或者是否存在我看不到的陷阱。下面是代码片段:#includenamespaceproject{//arm/math.hnamespacearm{inlinevoidadd_(){printf("armadd\n");

c++ - Qt/QML : Text with inline QML elements

我们正在使用QtQuick/QML构建图形用户界面。我们有一些来自数据库的动态多行文本,它们应该显示在应用程序中。目前,我们使用Text元素来显示文本。但是,我们需要一些内联嵌入到文本中的QML组件。为此,来自数据库的文本包含诸如::checkbox|1::之类的占位符,然后应由程序替换和显示这些占位符。在HTML中,这很容易,您只需将内联元素与文本混合即可产生如下结果:但在QML中,这似乎更困难,因为如果没有足够的空间,Text元素不能被分词成两半(文本和容器大小都应该是动态的).我们能想出的最佳解决方案是创建一个Flow布局,每个单词都有一个Text元素,但这似乎太老套了。在HTM

c++ - "using namespace"在 C++ 中是可传递的吗?

令我惊讶的是,以下代码在VC++2017上编译并打印“X”:#include#includenamespaceA{usingnamespacestd;}namespaceB{usingnamespaceA;}namespaceC{usingnamespaceB;stringa;}intmain(){C::a="X";std::cout看起来usingnamespacestd从命名空间A通过命名空间B进入命名空间C。这是VisualC++中的错误还是符合语言规范?我曾预计usingnamespacestd在封闭范围的末尾结束,也就是在命名空间A定义的末尾。编辑:据我所知,对thisque

c++ - `inline` , `constexpr` 或 `noexcept` 仅声明函数

对于没有主体的函数,仅用于类型检查目的或在非评估上下文中,是否有任何冒险将此类函数标记为inline,noexcept或constexpr?例如:namespace_detail{templateconstexprRresult_type(R(T::*)(Params...))noexcept;templateconstexprRresult_type(R(T::*)(Params...)const)noexcept;templateconstexprRresult_type(R(*)(Params...))noexcept;templateconstexprRresult_type(

c++ - ADL 是否适用于全局 namespace ?

Examplessuchas启用std的输出类型解释了如何ADL可用于“注入(inject)”某个函数/运算符,具体取决于应用fn/op的类型。我想知道ADL是否完全适用于全局命名空间,也就是说,是否在globalnamespacescope处声明(或通过using提供)类型让ADL在全局命名空间中寻找匹配的函数?具体来说,这些是否等同于wrt.日常事件能力?://1-atglobalnamespacescopestructGlobalType{};templatestd::basic_ostream&operator&os,GlobalTypeconst&x){osstd::basi

c++ - 海湾合作委员会 : C++11 inline object initialization (using "this") does not work when there is a virtual inheritance in hierarchy

当在初始化中使用此指针并且在层次结构中存在虚拟继承时,C++11内联对象初始化不起作用(在GCC中)。这可能是GCC的错误吗(因为它在CLang中工作)?还是C++11标准本身的差距?示例(可以在here中尝试),当使用GCC编译以下代码时:FieldIndexm_inB{"inB",this};不会被执行。但它会在使用CLang编译时执行。变通方法:从FieldIndexContainer派生A作为虚拟#include#include#includeusingnamespacestd;classFieldIndexContainer{public:classFieldIndex{pu

c++ - 氧气/C++ : Global namespace in namespace list

我可以在用Doxygen生成的文档的命名空间列表中显示全局命名空间吗?我有一些函数是extern"C",它们出现在声明它们的头文件的文档中,但不在namespace列表中,给人的印象是它们实际上并不存在。. 最佳答案 据我所知,Doxygen仍然缺少此功能。一种不太冗长的解决方法是使用@defgroupMyGlobals并将extern"C"函数放在该组中:/*!@ingroupMyGlobals*@{*///...functions/*!@}*/这会将函数添加到Modules选项卡上名为MyGlobals的条目中。Thisblog

C++中的constexpr和inline有何区别与联系?

在C++编程中,constexpr和inline是两个常被用于函数声明的关键字,它们分别有不同的语义和用途,但也可以在某些情况下结合使用。本文将深入探讨constexpr和inline在C++中的区别与联系,以及它们如何影响程序的性能和编译过程。一、constexpr关键字constexpr是C++11引入的一个关键字,用于指定表达式或对象的值在编译时就可以确定。当一个变量或函数被声明为constexpr时,编译器会尝试在编译阶段计算其值,以确保它可以在程序运行时作为一个常量使用。例如:constexprinta=5;//a是一个编译时常量constexprintb=a*2;//b同样是一个编

c++ - 为什么 'outer inline' 模板不编译?

好的,这是一个代码:#includestructA{classType{};templateTypeas(void){std::istringstreamtest;Typetemp;test>>temp;returntemp;}};它编译正常,一点问题都没有。现在,这是几乎相同的代码:#includestructA{classType{};templateinlineTypeas(void);};templateTypeA::as(void){std::istringstreamtest;Typetemp;test>>temp;returntemp;}砰,它不再编译了。错误:t.cc:

c++ - 窗体头文件中的 "error C2653: System is not a class or a namespace name",Visual C++

我之前关于同一项目的问题:one和two.没有必要阅读它们;只知道我正在尝试在VisualC++项目中使用nativeC++SDK。这比我最初想象的要棘手得多,但是这个网站关于ExtendinganativeC++projectwithmanagedcode已经帮助了我很多。按照最后一个链接的说明,我已将一个表单添加到我的nativeC++项目中,该项目已自动将项目转换为CLR项目。只有MainForm.cpp和Interface.cpp(允许nativeC++代码创建和显示MainForm的文件)使用/clr编译旗虽然;其他文件保持原样。我现在遇到的问题是,VisualStudio似