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