草庐IT

pseudo-typedef

全部标签

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

c++ - 什么是 typedef int var[1];做?

我遇到过以下代码:typedefintvar[1];//orvar[3]它到底有什么作用?我不明白下标添加了什么,因为现在我可以为int定义“var” 最佳答案 typedef声明使用与普通变量声明相同的语法。不同之处在于,不是声明“一个名为x的y变量”,而是声明“一个名为x的类型,它是输入y。”语法在其他方面相同。那么,让我们从您的示例中删除typedef,看看我们得到了什么:intvar[1];var是一个类型为int[1]的变量,或者说,一个int的数组。如果我们将typedef添加回去:typedefintvar[1];这使

c++ - 使用 typedef 声明函数有什么意义?

我有点困惑为什么我可以使用typedef来声明函数。这是我的例子:intAdd(inta,intb){returna+b;}intMult(inta,intb){returna*b;}typedefintfunc(int,int);intmain(intargc,char*argv[]){funcAdd;coutintfuncAdd;我可以直接调用Add()上面有什么意义?谁能解释一下我应该对函数使用typedef的场景? 最佳答案 首先,这个typedef在这里完全没用。但如果Add()就有意义了将在另一个编译单元中定义。主要好处

c++ - 匿名 namespace 内部/外部的 Typedef?

在.cpp文件中,这两种方式有什么区别/偏好吗?//filescopeoutsideanynamespaceusingX::SomeClass;typedefSomeClass::BufferMyBuf;速度/速度namespace{//anonymoususingX::SomeClass;typedefSomeClass::BufferMyBuf;} 最佳答案 我会说第二种用法相当不常见,至少在我目前看到的代码中是这样(而且我已经看到相当多的C++代码)。您能解释一下第二种技术背后的原因吗?您通常会在C++实现文件中使用匿名命名空

c++ - typedef 具有所有默认参数的模板

我声明了一个模板类,所有参数都具有默认参数,例如:templateclassFoo{};那么下面两个是等价的:Fooone;Footwo;但是,我不能这样做:Foothree;是否可以使用相同名称但没有括号的typedef来实现这一点,如下所示:typedefFooFoo; 最佳答案 我做了类似下面的事情,不知道你喜不喜欢:templateclassbasic_Foo{};typedefbasic_FooFoo; 关于c++-typedef具有所有默认参数的模板,我们在StackOver