language-lawyer

    3热度

    2回答

    所以这是一个非常基本的问题和超级微不足道的,但我只是通过编程原则&实践在c + +和我的程序阅读一个字符串和一个int是行为不同于Bjarne Stroustrup写的书,所以id很惊讶如果他犯了一个错误。反正这里的代码: #include "..\std_lib_facilities.h" int main() { cout << "Please enter your first

    8热度

    1回答

    我用3个编译器测试了以下代码,得到3个不同的结果:错误,警告和正常。 GCC(5.3):错误:警告:nullptr恒定的为 '布尔' 的隐式转换从 '的std :: nullptr_t' 到 'const的东西&' 锵(3.8)无效用户定义的转换 MSVC(14.1):没有错误,没有警告 哪个编译器是正确的?我知道这是一个指针类型和bool之间的微不足道的转换。但是关于std::nullptr_t

    13热度

    1回答

    我回答了this使用我不熟悉的C++构造的问题。我想知道这是否合法,或者由g ++(6.3.0)和clang ++(3.5.0)错误地允许。这个例子可online: #include <iostream> template <typename T> struct Base { using Type = int; }; template <typename T> struc

    11热度

    1回答

    我发现了一个代码段编译和铛+ 4(和躯干)正常工作,但未能在G ++ 7(和躯干)编译。假设我有以下struct类型: struct a { void foo() { } }; struct b { void bar() { } }; struct c { void bar() { } }; 我想创建一个过载设置出它处理a明确lambda表达式,而b和c是“捕获”用一个auto参数的通用拉

    1热度

    1回答

    [dcl.fct.default]/3(重点是我的): 默认参数应的 参数声明子句中只规定函数声明或lambda声明符或模板参数(14.1)中的函数声明或 ;在后者 的情况下,初始化子句应该是一个赋值表达式。 A 默认参数不应被指定为参数包。 如果在参数声明子句中指定了 ,那么在 参数声明的声明符或抽象声明符中不应出现 。 上面的最后一句说,如果在参数声明子句指定一个默认参数,应不出现说明符或抽象

    3热度

    1回答

    我问这是因为,尽管事实上称号Table 11是简单类型说明符,它们指定的类型,语法生产simple-type-specifier没有提及这种类型的组合,作为简单类型说明符。那么unsigned int是一个简单类型说明符? 编辑: 我不认为给予 aforementioned question的答案是正确的。如果这是真的,一个不能够说,声明 void* operator new(std::size_

    1热度

    1回答

    我有以下结构类型: typedef struct PG_Point PG_Point; struct PG_Point { int x; int y; }; typedef struct PG_Size PG_Size; struct PG_Size { int width; int height; }; typedef struct P

    33热度

    2回答

    考虑: int f() { static int i = 0; return i++; } struct Test { int a, b; Test() : a(f()), b(f()) {} }; Test t; 我知道a是b之前,由于其在struct声明的顺序初始化。 我也知道f在g(f(), f())的两个调用是不确定的。 所以我想知道

    4热度

    1回答

    允许声明一个非const引用为constexpr?示例代码: int x = 1; constexpr int& r = x; 这是通过gcc和铛接受(我试图两者的几个当前和过去的版本,回到C++ 11,和所有接受了它)。然而,我认为它不应该被接受,因为C++ 14 [dcl.constexpr/9]表示:如果constexpr说明符以引用声明使用 ,则出现在其初始值设定每全 表达应是一个常

    8热度

    2回答

    考虑following code: #include <type_traits> template<template<class...> class T, class... U> struct is_specialization_of : std::false_type{}; template<template<class...> class T, class... U> struct