constexpr

    1熱度

    1回答

    我正在試驗C++ constexpr。我正在使用FNV-1a哈希實現一個HashedString類。 一切似乎很好,除了Visual Studio 2015更新3似乎並沒有在編譯時評估constexpr。 我添加了一個static_assert,它沒有顯示錯誤。 但是在我的測試反彙編中,顯然有一個明確的調用constexpr函數而不是預先計算的值。 我也嘗試過使用g ++和clang,他們都能夠在

    3熱度

    3回答

    爲什麼C++編譯器可以將一個函數聲明爲constexpr,而這個函數不能被constexpr? 例如:http://melpon.org/wandbox/permlink/AGwniRNRbfmXfj8r #include <iostream> #include <functional> #include <numeric> #include <initializer_list> tem

    2熱度

    1回答

    爲了在編譯時強制對constexpr函數進行評估,我應該是 能夠將其返回值分配給constexpr變量。 constexpr bool const_d_ref(const double& v) { return false; } int main() { constexpr double dd = 0.0; constexpr bool cb = const_d_ref(d

    9熱度

    1回答

    在功能我不能使用constexpr值,相對於所述功能的外部。 我可以在範圍內使用auto ar1 = std::array<int, il.size()>();其中il定義。 但我不能在constexpr功能全il_to_array() 使用{ return std::array<T, il.size()>();}在功能上爲什麼我不能用constexpr價值,但我可以做這個數值的範圍塊相同? ht

    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