c++11相关内容
为什么按值捕获的值是 const,而按引用捕获的对象不是: int a;自动编译错误 = [=](){a = 1;}自动编译_ok = [&](){a = 1;} 对我来说这似乎不合逻辑,但它似乎是标准?尤其是对捕获的值进行不必要的修改可能是一个烦人的错误,但结果很可能仅限于 lambda 范围,而对通过引用捕获的对象进行不必要的修改通常会导致更严重的影响. 那么为什么不默认通过 con
..
..
我有将所有内容作为“const"值返回的习惯(?!?!?).像这样…… 结构体;s 常量 make_s();s const &s0 = make_s();s 常量 s1 = make_s(); 具有移动操作和右值引用以及以下功能... void take_s(s &&s0);void take_s(s const &&s0);//没有意义 我写不下去了…… take_s(make_s()
..
可能重复: 我应该返回 const 对象吗? (该问题的原标题是:int foo() 还是 const int foo()? 解释了我为什么错过它.) Effective C++,第 3 条:尽可能使用 const.特别是,返回 const 对象被提升以避免像 if (a*b = c) { 这样的意外赋值.我觉得这有点偏执,但我一直遵循这个建议. 在我看来,返回 const 对象会
..
..
“Effective C++"第 3 条说“尽可能使用 const",并给出了如下示例: const Rational operator*(const Rational& lhs,const 理性&右); 为了防止客户犯下这样的暴行: 有理 a, b, c;...(a * b) = c;//在 a*b! 的结果上调用 operator= 但是函数的非引用返回值不是已经是右值了吗?那么为什么
..
有什么方法可以按值捕获,并使捕获的值非常量?我有一个库函子,我想捕获 &调用一个非 const 但应该是的方法. 以下内容无法编译,但将 foo::operator() const 修复. struct foo{bool 运算符 () ( const bool & a ){返回一个;}};int _tmain(int argc, _TCHAR* argv[]){富阿富;自动栏 = [=]
..
最近我正在阅读 boost 的 API::optional 并遇到了以下问题: T const&运算符 *() const&;夯;运算符 *() &;T&&运算符 *() &&; 我还编写了自己的程序,将成员函数定义为 const&、&和&&(请注意,我不是在谈论返回类型,而是在分号之前的说明符)并且它们似乎工作正常. 我知道声明一个成员函数 const 是什么意思,但是谁能解释一下声明
..
..
以下定义有区别吗? const double PI = 3.141592653589793;constexpr 双 PI = 3.141592653589793; 如果不是,C++11 中首选哪种风格? 解决方案 我相信是有区别的.让我们重命名它们,以便我们可以更轻松地讨论它们: const double PI1 = 3.141592653589793;constexpr 双 PI2
..
容器要求已从 C++03 更改为 C++11.虽然 C++03 有一揽子要求(例如,向量的复制可构造性和可分配性),但 C++11 对每个容器操作定义了细粒度的要求(第 23.2 节). 因此,您可以例如将可复制构造但不可赋值的类型 - 例如具有 const 成员的结构 - 存储在向量中,只要您只执行某些不需要赋值的操作(构造和 push_back 就是这样操作;insert 不是).
..
尝试学习如何在 C++11 中使用新的 std::regex.但是我尝试的示例是抛出一个我不明白的 regex_error 异常.这是我的示例代码: #include #include 主函数(){std::string str = "xyzabc1xyzabc2xyzabc3abc4xyz";std::regex re("(abc[1234])");//
..
过去,我使用 gcc 的 C99 风格的复合文字扩展C++ 在代码中编码嵌套的常量数据结构.这是一个例子: #include 使用命名空间标准;结构树{常量字符*名称;常量树*左;常量树*对;};常量树 *常量树 = (树 []) {"top",//名称(树[]) {“剩下",0,0},(树[]) {“对",0,0}};静态无效转储(常量树*树){如果(!树){cout 左)
..
使用 g++ 的正确方法是什么: 模板 空隙 g (F f);模板 解决方案 我想你也需要在捕获列表中展开pack a,像这样: 模板 无效 f (A ... a) {g ([&, a...] () { h (a...); });} 这是来自 C++0x 最终委员会草案,第 5.1.2.23 节的相关文本: 捕获后跟省略号是包扩展(14.5.
..
以下代码: #include #include 使用命名空间标准;constexpr int N = 1000000;constexpr int f(int x) { return x*2;}typedef 数组一个;模板struct F { static constexpr A f() { return A{{ ::f(i)...
..
..
我正在使用 gcc 4.6.1,并且遇到了一些有趣的行为,涉及调用 constexpr 函数.该程序运行良好,并立即打印出 12200160415121876738. #include extern const 无符号长乔;constexpr unsigned long fib(unsigned long int x){返回 (x
..
那里 有 已经 问题 在 Stackoverflow 上询问 为什么 basic_fstream 不起作用.答案说 char_traits 仅专门用于 char 和 wchar_t (加上 char16_t、char32_t 在 C++11 中),您应该坚持使用 basic_fstream 来读取二进制数据并在需要时进行转换. 该死的,这还不够好!:) 没
..
我正在使用 Visual Studio Code 编译 C++ 程序,它适用于大多数 C++ 程序,因为它使用 g++ 命令进行编译.但是,我在使用它编译 c++11 程序时遇到了困难. 当我尝试编译 C++11 程序时,编译器命令 g++ 会尝试使用默认的 C++98 标准对其进行编译,这会导致错误. 我知道使用 g++ -std=c++11,我们可以使用 g++ 编译 C++11
..
我已经有了创建标记列表的标记器接口.我有解析器的工作机制.它真的很独特,就像一个魅力.我唯一想念的是 AST 的基本结构.树、节点和语句应如何在抽象级别表示.我不需要任何实现,只需快速了解它在类层次结构中的外观如何?我正在研究一种面向对象的语言.是的,我已经意识到我需要两种类型的陈述.一些返回值的“表达式"类型语句和一个不返回的指令流控制类型语句.非常感谢. 解决方案 如果你的语言是命令式
..