相关疑难解决方法(0)

我在哪里可以找到当前的C或C++标准文档?

对于许多问题,答案似乎可以在"标准"中找到.但是,我们在哪里找到它?最好是在线.

谷歌搜索有时会觉得徒劳,尤其是对于C标准,因为他们在编程论坛的大量讨论中被淹没.

要开始这个,因为这些是我现在正在搜索的,那里有很好的在线资源:

  • C89
  • C99
  • C11
  • C++ 98
  • C++ 03
  • C++ 11
  • C++ 14

c c++ standards c++-faq

394
推荐指数
8
解决办法
12万
查看次数

C++ 11中的safe-bool成语是否过时了?

@R的答案.Martinho Fernandes表示,在C++ 11中,安全布尔的习语显然已被弃用,因为它可以被简单的替换

explicit operator bool() const;
Run Code Online (Sandbox Code Playgroud)

根据答案中的标准引用§4 [conv] p3:

对于某些发明的临时变量(§8.5),T当且仅当声明T t=e;格式正确时,表达式e才能隐式转换为类型t.某些语言结构要求将表达式转换为布尔值.对于某些发明的临时变量t(§8.5),当且仅当声明格式正确时,表示出e现在这样的上下文中的表达被上下文转换bool并且格式良好bool t(e);.

突出显示的部分清楚地显示了"隐式显式转换"(在标准中称为"上下文转换")为@R.马蒂纽说.

需要"隐式显式强制转换"的"某些语言结构"似乎如下:

  • if,while,for(§6.4 [stmt.select] p4)
  • 二元逻辑运算符&&||(§5.14 [expr.log.and/or] p1两者)
  • 逻辑否定运算符!(§5.3.1 [expr.unary.op] p9)
  • 条件运算符?:(§5.14 [expr.cond] p1)
  • static_assert(§7 [dcl.dcl] p4)
  • noexcept(§15.4 [except.spec] p2 …

c++ c++-faq deprecated safe-bool-idiom c++11

174
推荐指数
1
解决办法
2万
查看次数

C++ Literal字符串和const字符串引用参数

我有两个带有const std :: string&和bool的重载函数.我现在用文字字符串调用该函数.bool版本被调用.这有点奇怪,这确实是一个陷阱.

有谁能解释为什么?

请参阅下面的代码.输出是

Write == 1
Run Code Online (Sandbox Code Playgroud)
#include <iostream>
#include <string>

void write(const std::string& name_) {
  std::cout << "Write == " << name_ << std::endl;
}

void write(bool name_) {
  std::cout << "Write == " << name_ << std::endl;
}

int main()
{
  write("data");
}
Run Code Online (Sandbox Code Playgroud)

c++

8
推荐指数
1
解决办法
471
查看次数

标签 统计

c++ ×3

c++-faq ×2

c ×1

c++11 ×1

deprecated ×1

safe-bool-idiom ×1

standards ×1