草庐IT

typedeffing

全部标签

c++ - 如何以不同方式专门化 typedef 及其隐式类型?

我有这样的东西:typedefintAnotherType;templateFunc(TValue);//AndIwanttospecializethesetwocasesseparately:templateboolFunc(intValue){...}templateboolFunc(AnotherTypeValue){...}我真的不需要专攻int,我真正需要的是为AnotherType执行不同的函数。而且我无法更改AnotherType或基本函数的定义。由于SFINAE,重载也无济于事。 最佳答案 答案是否定的。当您使用ty

c++ - (g++ 4.7.1) 用等效类 typedef 替换显式类型名称无法编译

我正在尝试创建一个模板化函数,它接受一个可迭代对象和一个函数,这样传递的函数将被隐式转换为适当类型的std::function(从而允许它与完整函数和lambda一起使用)。代码如下:#include#include#include#includetemplatevoidbar(constT&base,std::functionf)//works//voidbar(constT&base,std::functionf)//failstocompile{std::cout)==typeid(std::function))?"identical":"distinct"){0,1},filt

c++ - 模板函数的 'typedef' (boost::make_shared)

我正在将我的项目迁移到C++11,我正在尝试使用尽可能多的标准库。在完成迁移之前,我需要一种快速的方法来在shared_ptr的boost和STL实现之间切换(以进行基准测试、单元测试等)。所以我为shared_ptr定义了一个别名,如下所示:#ifdef_USE_BOOST_templateusingshared_ptr=boost::shared_ptr#elsetemplateusingshared_ptr=std::shared_ptr#endif现在我需要为make_shared做同样的事情...但是怎么做呢?宏观?wrapper?我真的不喜欢他们中的任何一个。有哪些替代方案

c++ - 将 __attribute__ 与 typedef 结合使用

如果问题看起来太明显或太简单,我们深表歉意。不幸的是,在经历了一堆线程并用谷歌搜索了typedef加上attribute前缀之后,我仍然无法弄清楚。我在(据说)可移植应用程序中有以下代码片段-#ifdefWIN32#defineMY_PREFIX__declspec(dllexport)#else#defineMY_PREFIX__attribute__((visibility("default")))#endiftypedefMY_PREFIXboolsome_func(void);所以我的问题是-1)typedef到底在做什么?2)代码在VS2008上编译良好,但在G++(gcc-

c++ - typedef 是一个定义吗?

我真的很困惑。我正在阅读BjarneStroustrup的TC++PL(特别版,第19版-2010年9月)。让我引用这本书的一部分,强调我的困惑:charch;strings;intcount=1;constdoublepi=3.1415926535897932385;externinterror_number;constchar*name="Njal";constchar*season[]={"spring","summer","fall","winter"};structDate{intd,m,y;};intday(Date*p){returnp->d;}doublesqrt(do

c++ - 我可以在 typedef 函数签名中放置 throw 声明吗?

是否可以声明一个包含抛出规范的函数指针?例如,我有这个功能:voidwithout_throw()throw(){}并想创建一个接受它作为参数的函数,完成throw()部分。我试过将它添加到typedef中,但这似乎不起作用:typedefvoid(*without)()throw();GCC给我错误error:‘without’declaredwithanexceptionspecification。 最佳答案 你不能输入定义。标准中明确不允许这样做。(将其替换为noexcept也无济于事,同样的问题。)引用C++11草案n329

c++ - 如何在模板中使用嵌套的 typedef?

我想导出一个类型Test来自模板类型Base我专注于派生类型(即Base)。在模板化类型中,我想使用在派生类型(模板参数)中定义的typedef。但是,我得到了这个编译错误:errorC2039:'X':isnotamemberof'Test'这是代码片段:templateclassBase{protected:voidfunc(typenameT::Xx){}};classTest:publicBase{public:typedefintX;};这是否可行,如果可行,我需要做的修复是什么?(我看到了针对此类问题的几个答案,但看起来我的场景并没有通过前缀类型名来修复-它是否与从专门用于

C++ typedef typename 类名::模板

我无法解析以下代码行的含义:typedeftypenameAllocator::templaterebind::othermapped_type_allocator;这是分配器重新绑定(bind)的代码(第63行https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-api-4.5/a00756_source.html)这与下面的有何不同?typedeftypenameAllocator::rebind::othermapped_type_allocator; 最佳答案 typedeft

c++ - 不清楚的 typedef 类型

我看到这段代码,想知道它是什么意思。但即使看了大约15分钟,我还是看不懂。templatestructVector4{typedefTVector4::*constvec[4];staticconstvecconstVec;//justtohavesomememberinstancesofTTmember1,member2,member3,member4;};那么constVec的类型是什么?请不要只是重复typedef,而是用通用语言解释。到目前为止我的笔记:为什么有两种类型(T和Vector4),这是函数指针吗?::*是什么意思?从Vector4的范围中获取所有内容?它是一个常量指

c++ - 对 self 的 typedef 有什么影响吗?

我遇到过一些具有以下内容的C++代码:typedefRequestRequest;这只是空操作还是这个typedef实际有影响,如果有,它有什么影响? 最佳答案 您可以在第7.1.3节中阅读与C++2003ANSIISOIEC148822003的typedef说明符相关的所有规则。在7.1.3中,2)据说如果名称已经引用某种类型,则允许标识typedef。这是合法的:typedefintRequest;typedefRequestRequest;//Redefines"Request"withnoeffect它不是:typedefR