从ISO草案n3290第5.1.2节第19点开始:
与lambda表达式关联的闭包类型具有已删除(8.4.3)的默认构造函数和已删除的复制赋值运算符.它有一个隐式声明的复制构造函数(12.8),并且可能有一个隐式声明的移动构造函数(12.8).[注意:复制/移动构造函数的隐式定义方式与隐式定义任何其他隐式声明的复制/移动构造函数的方式相同. - 尾注]
可以请任何人......告诉一些这方面的例子可以理解吗?
有没有机会/方法来检查Closure对象(类型)?
ISO草案n3290第3.4.2节第1段中的一点:
当函数调用中的postfix-expression是非限定id时,可以搜索在通常的非限定查找期间未考虑的其他命名空间,并且在这些命名空间中,可以找到不可见的命名空间范围的朋友函数声明.对搜索的这些修改取决于参数的类型(以及模板模板参数,模板参数的命名空间).
在这里他们说"对搜索的这些修改取决于模板参数的参数/模板模板参数/命名空间的类型"......任何一个人都可以用一个例子来表达吗?我尝试使用arguments模式类型.请使用模板模板参数类型和模板参数类型的命名空间进行expalin
在ISO标准C++中:最新的工作草案是n3291
,它不是公开的.但是n3290
可用.到2月份草案是n3242
.我现在可以知道......哪个草案更适合成为最终草案?因为n3242
与之相比有很多差异n3290
?
在这个链接中他们也给了..:当前的工作草案为n3242
?(为什么不n3290
)
http://www.open-std.org/jtc1/sc22/wg21/
http://en.wikipedia.org/wiki/C%2B%2B0x
请告诉我哪个草案是正确的(直到最终草稿发布)?
ISO草案N3290:不合格名称查询:第3.4.1节,第14段:
如果命名空间的变量成员在其命名空间的范围之外定义,则会查找成员定义中出现的任何名称(在declarator-id之后),就好像成员的定义出现在其名称空间中一样.
例如:
namespace N {
int i = 4;
extern int j;
}
int i = 2;
int N::j = i; // N::j == 4
Run Code Online (Sandbox Code Playgroud)
除了使用'extern'关键字之外,还有其他可能证明这一点吗?
你可以提供一些其他的例子......除了extern
在C++ 0x -n3290草案中:他们在章节中添加了:Destructors:12.4/2nd point last line
**A destructor shall not be declared with a ref-qualifier.**
Run Code Online (Sandbox Code Playgroud)
在c ++ 03 Draft ....他们没有在析构函数中提到这一点?
我的问题是,是否
*~S() ; //this declaration is allowed or not according to the Standard's
//**~S(); ***~S() ; etc...........
Run Code Online (Sandbox Code Playgroud)
允许这种类型的声明?他没有在草案中描述过这个......宣言?
在GCC 4.6.0中,Sun/Oracle C++ 12.0,--->这个声明允许使用Comeau C/C++ - >不允许
ISO C++草案n3290:3.4.0第二点
在"表达式的上下文中查找"的名称在查找表达式的范围内被查找为非限定名称.
有人请用一个例子解释这个陈述吗?
ISO C++草案(n3290)中的一点:
3.4.2/3参数依赖名称查找:
让
X
是由unquali音响ED查找(3.4.1)中产生的查找组并且让Y
是由参数依赖查找产生的查找集(德音响定义如下).如果X
包含
- 宣布集体成员(#1)或
- 块范围函数声明,它不是using声明(#2)或
- 声明既不是函数模板也不是函数模板(#3)
然后
Y
是空的.否则Y
是在与参数类型相关联的名称空间中找到的声明集,如下所述.通过查找名称找到的声明集是X
和的并集Y
.
是否有示例代码片段演示了涉及#1,#2和#3的ADL?
ISO C++草案(n3290)中的一点:3.4.3.2/1命名空间成员
如果qualified-id的nested-name-specifier指定了名称空间,则在名称空间的范围内查找在嵌套名称说明符之后指定的名称.如果qualified-id以::开头,则在全局命名空间中查找::之后的名称.在任何一种情况下,都会在发生整个后缀表达式的上下文中查找template-id的template-argument中的名称.
这里可以解释一下BOLD部分......以及从早期的c ++ 03草案到c ++ 0x草案他补充道
如果qualified-id以::开头,则在全局命名空间中查找::之后的名称.
任何人都可以用示例程序解释一下
main
C程序和C++程序有什么区别?
以外
句法:
int main() { /* … */ }
int main(int argc, char* argv[]) { /* … */ }
int main() , void main() ,etc ...
Run Code Online (Sandbox Code Playgroud)主要是:
C程序和C++程序中的main之间的区别
根据ISO标准,C++ 98,C++ 03和C++ 0x之间是否有任何差异?即程序的入口点(程序启动实现)等.
N3290 C++草案,第12.2节,第5点,第10行.
第二个上下文是引用绑定到临时的.绑定引用的临时对象或绑定引用的子对象的完整对象的临时对象在引用的生命周期内持续存在,除了:
在new-initializer(5.3.4)中对引用的临时绑定将持续到包含new-initializer的full-expression完成为止.[例如:
Run Code Online (Sandbox Code Playgroud)struct S { int mi; const std::pair<int,int>& mp; }; S a { 1, {2,3} }; S* p = new S{ 1, {2,3} };// Creates dangling reference
- 结束示例] [注意:这可能会引入悬空引用,并鼓励实现在这种情况下发出警告. - 结束说明]
与C++ 03相比,这是一个补充点.但这个例子对我来说是不可理解的.你能用其他任何例子来解释这一点吗?
我知道悬空引用和临时对象是什么,并且std::pair
包含两个可能不同数据类型的值.
c++ language-lawyer temporary-objects c++11 dangling-pointer
是否有任何免费的C++编译器可以在Mac OS(苹果机器)中安装
请..给我链接下载和程序到INSTALL.Since我是mac OS的新用途
我可以知道哪些C++编译器(在线/免费)支持c ++ 0x中的" 继承构造函数 "功能
N3290草案:第12.9节:继承构造函数
我尝试使用VS10,GCC 4.6.0 ..但我认为它不支持..(请确认.)
请告诉我哪些在线编译器或免费编译器支持..此功能
http://wiki.apache.org/stdcxx/C++0xCompilerSupport
http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c-0x-core-language-features-in-vc10-the-table.aspx
我gooogled ..但我没有得到..正确的信息..帮帮我?
ISO C++ DRAFT n3290:依赖于参数的名称查找:第3.4.2节,第2段,
对于函数调用中的每个参数类型T,存在一组零个或多个关联的命名空间以及要考虑的一组零个或多个关联的类.命名空间和类的集合完全由函数参数的类型(以及任何模板模板参数的名称空间)决定.用于指定类型的typedef names和using-declaration对这个集合没有贡献.命名空间和类的集合按以下方式确定:
- 如果T是基本类型,则其关联的命名空间和类集都是空的.
- 如果T是类类型(包括联合),则其关联的类是:类本身; 它所属的成员,如果有的话; 及其直接和间接基类.其关联的名称空间是其关联类是成员的名称空间.
此外,如果T是类模板特化,则其关联的名称空间和类还包括:与模板类型参数(模板模板参数除外)提供的模板参数类型相关联的名称空间和类; 任何模板模板参数都是成员的名称空间; 以及用作模板模板参数的任何成员模板的类都是
成员.[ 注意:非类型模板参数不会影响关联命名空间的集合. - 结束说明]
任何人都可以通过一个例子来表达这个......请
在上面的语句中"命名空间和类的集合都是空的"..这有可能吗?
在第二点,他说更多......请任何人解释一下吗?
c++ ×13
c++11 ×13
name-lookup ×4
namespaces ×3
c ×1
constructor ×1
declaration ×1
destructor ×1
inheritance ×1
lambda ×1
macos ×1
scope ×1
standards ×1