草庐IT

c++ - 如何在 GCC 4.5 中使用 C++0x 原始字符串?

这个页面说GCC4.5有C++原始字符串文字:http://gcc.gnu.org/projects/cxx0x.html但是当我尝试使用此页面中的语法时:http://www2.research.att.com/~bs/C++0xFAQ.html#raw-strings#include#includeusingnamespacestd;intmain(){strings=R"[\w\\\w]";}我收到此错误:/opt/local/bin/g++-mp-4.5-std=gnu++0x-O3rawstr.cc-orawstrrawstr.cc:9:19:error:invalidcha

c++ - 参数包中的参数计数?是否有 C++0x 标准库函数呢?

我只是想知道C++0x标准库中是否有任何东西可用于计算参数包中的参数数量?我想去掉下面代码中的field_count。我知道我可以构建自己的计数器,但似乎将其包含在C++0x标准库中是一件显而易见的事情,我想确保它不存在:)本土计数器实现也很受欢迎。templatestructEntity{consttupledata;constarraysource_names;Entity():data(){}}; 最佳答案 是的,您可以使用sizeof...。来自C++0xFCD(§5.3.3/5):Theidentifierinasizeof

c++ - C++11 (C++0x) 是完整的 C++03 超集吗?

C++被认为是(几乎)C的超集;但仍有某些东西在C中有效,而在C++中无效。是否有任何功能/设施是有效的C++03但在C++11中不起作用? 最佳答案 Isthereanyfeature/facilitywhichisavalidC++03butnotworkinginC++11?有一些不兼容的地方:exporttemplate被移除(不被弃用,真正被移除)您不能再使用auto作为存储说明符新增保留字:alignof、char16_t、char32_t、constexpr、decltype、noexcept、nullptr、stat

c++ - C++0x 仍然可以使用全局运算符 new 显式分配吗?

Wikipedia状态:Atypecanbemadeimpossibletoallocatewithoperatornew:structNonNewable{void*operatornew(std::size_t)=delete;};Anobjectofthistypecanonlyeverbeallocatedasastackobjectorasamemberofanothertype.Itcannotbedirectlyheap-allocatedwithoutnon-portabletrickery.(Sinceplacementnewistheonlywaytocallaco

C++0x lambda,如何作为参数传递?

请看以下C++0xlambda相关代码:typedefuint64_t(*WEIGHT_FUNC)(void*param);typedefstd::mapCallbackTable;CallbackTabletable;table["rand_weight"]=[](void*param)->uint64_t{return(rand()%100+1);};我收到一个错误(在VisualStudio2010中),无法将lambda转换为WEIGHT_FUNC的类型。我也知道答案:使用std::functionobject:typedefstd::functionWEIGHT_FUNC;不

C++0X 概念消失了。还应该使用哪些其他功能?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭4年前。Improvethisquestion您可能听说过,C++标准委员会的最后一次session投票决定从下一个C++标准中删除概念。当然,这会影响其他功能,并且似乎会再次打开标准。如果是这样,您认为应该删除(或添加)哪些其他功能,为什么?链接:RemovalofConcepts--DannyKalev(关于删除概念的决定)SimplifyingtheuseofConcepts--BjarneStroustrup(关于现在看来的概

c++ - C++0x 概念和 Boost 概念检查库 (BCCL) 有什么区别?

Concepts没有使C++0x成为标准,但Boost仍然提供TheBoostConceptCheckLibrary(BCCL).我猜BCCL并没有涵盖C++0x标准中的所有内容。BCCL和提议的C++0x解决方案有什么区别? 最佳答案 检查模板定义这些手动解决方案的概念的一个很大区别是概念允许对模板的定义进行类型检查,而无需做任何特殊的事情。概念检查库只允许对它的*use*进行类型检查(除非您手动编写测试实例化类型或为标准情况使用提供的类型,见下文)。例子:templateintdistance(InputIteratora,In

c++ - Boost.Spirit 可以在理论上/实践上用于解析 C++(0x)(或任何其他语言)吗?

理论上可以胜任吗?是否可以实际完成?生成的解析器是否能以足够的性能和输出(例如,LLVMIR或GCC的gimple)集成到竞争编译器中? 最佳答案 对不起。我和它的作者谈过,他说他不会让它完全解析C++,但承认他接受它来解析某些结构是模棱两可的。所以这不再是答案了!!我建议你看看scalpel.从它的主页Scalpelstandsforsourcecodeanalysis,libreandportablelibrary.ThisisaC++librarywhichaimstoperformfullsyntaxand

c++ - C++0x 中的 disable_if 在哪里?

Boost同时拥有enable_if和disable_if,但C++0x似乎缺少后者。为什么它被遗漏了?C++0x中是否有元编程工具允许我根据enable_if构建disable_if?哦,我刚刚注意到std::enable_if基本上是boost::enable_if_c,而没有boost::enable_if在C++0x中。 最佳答案 冒着看起来愚蠢的风险,只需在enable_if的bool模板参数中使用!expression而不是expression以使其表现得像disable_if?当然,如果这个想法可行,您可以扩展它以编写

c++ - 在 C++0x 中删除虚函数

不清楚如果我在C++0x中删除虚方法会发生什么:virtualintderive_func()=delete;这是否意味着这个类以及从它继承的所有东西都不能定义/实现derive_func()方法?还是这是非法/编译错误? 最佳答案 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html#delete已删除的虚函数不能覆盖未删除的虚函数,反之亦然。意味着它非常无用(至少我读过它)唯一有效的用途是:structA{virtualvoidb()=delete;