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

    3熱度

    1回答

    我的編譯器不支持if constexpr,但我被它的好處所吸引。 我必須擁有它 - 即使它可能是假的。 此代碼是我試圖模仿if constexpr的行爲。 目的是使線(###)僅出現在1個功能: - #include <iostream> using namespace std; template<bool Flag,typename F> constexpr typename std::e

    8熱度

    1回答

    這是Detecting constexpr with SFINAE的後續問題。 我想檢測一個元組(或任何可以與std::get一起使用)的元素是否是constexpr。所以我寫了類似於XEO提供了以下助手: template<size_t> struct sfinae_true : std::true_type{}; template<size_t N, class T> auto chec

    -2熱度

    1回答

    我想聲明一個constexpr,它會引發編譯錯誤。 static constexpr float goBaseMovementSpeed = (1.135f/440.f); 這條線爲什麼不起作用? 錯誤C2144:語法錯誤:'float'應該以';'開頭, 錯誤C4430:缺少類型說明符 - 假定爲int。注:C++不支持default-int goBaseMovementSpeed是類的成員

    10熱度

    1回答

    根據n4487和其他C++ 17引用,將會有新的lambda函數說明符 - constexpr,如果存在「明確指定函數調用運算符是constexpr函數」。。我理解lambda表達式的動機。什麼是對我有意思的是,提議的第4點規定: 4)如果constexpr說明符的拉姆達說明符中省略,函數調用運算符(或模板)爲constexpr是否會滿足要求一個constexpr功能。 這使我兩個問題: 爲什麼我

    9熱度

    2回答

    問題:是否有可能通過將參數傳遞給內部constexpr函數(可能帶有某種「完美轉發」)來評估函數內部的常量表達式? 例子: constexpr size_t foo(char const* string_literal) { return /*some valid recursive black magic*/; } void bar(char const* string_lite

    1熱度

    1回答

    我這是在VS2015產生奇怪的行爲非常簡單的項目: #include "Vec2f.h" #include "StaticRendercomponent.h" int main(int argc, char** argv) { constexpr Vec2f position(0.0f, 0.0f); constexpr PhysicsComponent compone

    8熱度

    1回答

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