草庐IT

c++ - typedef 没有替换为数据类型

我对下面这段代码感到惊讶,#includetypedefinttype;intmain(){typetype=10;printf("%d",type);}这样就完成了,程序的输出是10。但是当我如下略微更改代码时,#includetypedefinttype;intmain(){typetype=10;floatf=10.9898;intx;x=(type)f;printf("%d,%d",type,x);}在aCC编译器中:"'type'isusedasatype,buthasnotbeendefinedasatype."在g++编译器中:"error:expected`;'befo

C++ typedef 重命名函数

我希望能够typedef函数,以便能够将模板元编程用作函数选择器(如下例所示)。我也试过将函数作为模板参数传递。在这两种情况下,都会出现错误,因为函数不是类型。我知道如果它们是仿函数,这些方法中的任何一种都会起作用,但我希望能够有一个通用的解决方案。是否有一种我不知道的“typedef函数”的实际方法,但使用不同的名称?编辑:此时我的用例是我希望能够在使用boost::property_tree::xml_parser::read_xml和boost::property_tree::json_parser之间进行选择::read_json。但它不仅限于这种情况,使用成员函数、函数指针或

c++ - 如何定义依赖于模板参数的 typedef 的 typedef

我想制作一个typedef,它依赖于模板参数中typedef的存在:structfoo{usingMyType=int;};templatestructbar{//Pseudocode#ifT::MyTypeisdefinedusingMyType=T::MyType;#elseusingMyType=double;#endif};有没有办法让它在C++14中使用std::conditional或其他东西工作? 最佳答案 有一点sfinae。templatestructtype_or_default{usingtype=Fallba

c++ - 创建新的原始类型

有没有一种方法可以创建一种类似于基本类型(例如char)的新类型,并且可以在它们之间隐式转换,但会在模板中进行不同的解析,例如,以下代码有效?typedefcharutf8;templatevoidf(Tc);templatevoidf(charc){std::coutvoidf(utf8c)//errorC2766:explicitspecialization;'voidf(char)'hasalreadybeendefined{std::cout我在想一个包含单个数据成员的类可能是可行的,如果是的话,最干净的方法是什么,编译器是否能够像原始数据一样对其进行优化。编辑:我尝试了BOO

C++ 模板化类型定义

我有一个模板类templateclassExample{...};里面有有许多以下类型的方法:templatemethod(....)在这些里面我使用tr1::shared_ptr到U或V或T。打字很乏味tr1::shared_ptr或tr1::shared_ptr.显而易见的事情:templatetypedeftr1::shared_ptrshptr;不起作用。遇到这种情况怎么办?有什么可以减少冗长的吗? 最佳答案 您可以使用内部类型:templatestructsptr{typedeftr1::shared_ptrt;};然后说

c++ - 模板的模板 typedef

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C++templatetypedef我正在尝试通过另一个模板的预特化来派生另一个模板的模板类型:templatestructtest{enum{TEST_X=a,TEST_Y=b,TEST_Z=c,};};templatetypedeftesttest01;但是,在GCC4.4.5上,我收到此错误:error:templatedeclarationof'typedef'onthesecondtype(test01)。非常感谢您的指导,因为我不明白我的代码有什么问题。

c++ - typedef 结构和枚举,为什么?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:Purposeofstruct,typedefstruct,inC++typedefstructvsstructdefinitions在我维护的代码中,我经常看到以下内容:typedefenum{blah,blah}Foo;typedefstruct{blahblah}Bar;代替:enumFoo{blah,blah};structBar{blahblah};我一直使用后者,这是我第一次看到前者。所以问题是为什么一个人会使用一种风格而不是另一种风格。有什么好处吗?它们在功能上也相同吗?我相信他们是但不是10

c++ - 在泛型类的每个实例化中增加编译时变量

我有这门课:templatestructProbe{staticconstuint64_tCounter=N;typedefTType;};我将其用作:typedefProbeFirstIntProbe;typedefProbeSecondIntProbe;typedefProbeFloatProbe;是否可以创建一个编译时\宏方法,允许我在不指定第二个参数的情况下实例化此类,例如:typedefProbeFirstIntProbe;typedefProbeSecondIntProbe;typedefProbeFloatProbe;我认为这是不可能的,但我又一次看到人们用C++做一些我

c++ - 为什么 map 上的 BOOST_FOREACH 仅适用于 typedef

我试图通过map编写一个简单的循环元素,我想知道为什么我使用的第一种语法不起作用/无法编译?我写的第一个版本如下,它不能用VS'2008/boost版本1.44编译:std::mapmyMap;...BOOST_FOREACH(map::value_type&p,myMap){}现在,如果我像下面这样重写代码,编译就可以了,但为什么呢?typedefstd::mapmyMap_t;myMap_tmyMap;...BOOST_FOREACH(myMap_t::value_type&p,myMap){} 最佳答案 它是一个预处理器宏,它

c++ - typedef 智能指针是不好的做法吗?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion我在当前的项目中使用智能指针,使用它们时必须键入长行代码似乎非常麻烦。因为我希望我的代码更简洁、更容易理解,所以我开始像这样对智能指针进行类型定义:typedefstd::unique_ptrSystemPtr;所以我的问题是,typedef智能指针是不好的做法吗?