constexpr

    0熱度

    1回答

    以下問題是從更大的代碼中壓縮的。因此,某些表達式似乎是過度殺傷或不必要的,但對原始代碼至關重要。 考慮有一個結構,其中包含編譯時間常數和一個簡單的容器類: template<typename T> struct CONST { static constexpr T ONE() { return static_cast<T>(1); } }; tem

    13熱度

    2回答

    可以說你有一個函數可以爲你的應用程序產生一些安全令牌,比如一些散列鹽,或者可能是對稱密鑰或非對稱密鑰。 現在讓我們說,你在你的C++爲constexpr有這個功能,你基於部分信息,供您構建功能鍵(比如,內部版本號,時間戳,別的東西)。 你是一個勤奮的程序員確保,並在適當的方式把這種以確保它只是被稱爲在編譯的時候,這樣的死脫去除最終的可執行代碼。 但是,你永遠不能肯定,別人是不會調用它以不安全的方式

    17熱度

    2回答

    根據this,與constexpr聲明的函數必須滿足幾個要求,其中之一是如下: 存在至少一個參數值使得函數的調用可以被評估核心常量表達式的子表達式... 好,constexpr功能可以沒有參數: constexpr int Bar(/* empty */) { return 0xFF; } constexpr int value = Bar(); // Valid expression co

    1熱度

    1回答

    我試圖與constexpr和static_assert一起玩。實際上我需要檢查一個constexpr字符串的長度,它是由一個專用函數計算的。這裏就是我試圖運行: #include <iostream> using namespace std; class Test { private : static constexpr char str[] = "abc";

    2熱度

    1回答

    進行評估編譯時間上下文像模板參數ot enum shenanigans)? 事情是這樣的: const int a = force_compute_at_compile_time(omg()); 也許這樣的事情(不編譯 - 我沒有太多成constexpr尚): template<typename T> constexpr T force_compute_at_compile_time(cons

    10熱度

    1回答

    假設我有一個constexpr函數指針數組,我想編寫一個constexpr函數來查找指定函數的數組索引。 我可能有這樣的代碼: void test1(){}void test2(){}void test3(){}void test4(){} typedef void(*func)(void); constexpr func funcs[] = { &test1, &test2, &test3

    2熱度

    2回答

    按照[dcl.constexpr/3]: 一個constexpr函數應滿足下列要求的定義: [...] - 其功能體應爲=刪除,=默認情況下,或[。 .. 這意味着下面的類代碼段是有效的: struct S { constexpr void f() = delete; }; 刪除constexpr函數的目的是什麼? 定義它有什麼好處constexpr如果有的話? 我找不出任何理由,

    5熱度

    1回答

    我正在實現一些非常類似於std::vector的東西,但在堆棧上使用數組而不是內存分配。 d-tor調用一個使用SFINAE的函數。 如果value_type是POD功能有空體。 如果value_type是普通類std::string,則該函數具有正文並正確銷燬所有數據。 現在,我希望能夠使用這個新的std::vector作爲constexpr。然而即使C-tor被宣佈爲constexpr,代碼也

    4熱度

    2回答

    我有一個模板功能,並在一個點上,我想這取決於模板參數有不同的代碼: template <typename T> void function(const T ¶m) { // generic code here... // pseudo-code: if constexpr isinstance(param, Banana) { param.pe

    8熱度

    1回答

    我試圖做一個簡單的LookupTable中基於整數數組,這裏的想法是有它在編譯時計算上。 試圖使它可以用於我可能有的各種整數類型的任何其他未來表格,我可能需要它,我需要它作爲模板。 所以我有一個LookUpTable.h #ifndef LOOKUPTABLE_H #define LOOKUPTABLE_H #include <stdexcept> // out_of_range tem