constexpr

    5熱度

    2回答

    下面的程序給我一個鏈接時錯誤: #include <iostream> struct Test { static constexpr char text[] = "Text"; }; int main() { std::cout << Test::text << std::endl; // error: undefined reference to `Test::text'

    1熱度

    1回答

    考慮下面的代碼已知: // Class definition class myclass { public: constexpr myclass() noexcept: _value{0}, _option{true} {} constexpr myclass(int value) noexcept: _value{value}, _option{true} {}

    5熱度

    2回答

    以下代碼段已成功使用gcc 5.3.0進行編譯,但未能使用clang 3.7.0進行編譯。在這兩種情況下,我使用了在線coliru編譯器和相同的命令行選項:-std = C++ 14 -O2 -Wall -pedantic -pthread。 #include <cstdio> // Definition of constexpr function 'foo'. constexpr std:

    4熱度

    1回答

    將代碼轉換爲constexpr的一般技巧是什麼?說,有一個幾何轉換(輸入)幾何圖形的算法。輸入和輸出根據性質和大小而有所不同,並且相互依賴。目前它實現爲一個類,它目前使用std::map和std::vector(不失一般性)。 什麼是重構代碼的方法,它使用動態內存來獲取代碼,該代碼與常量表達式的要求相匹配? 我能想象的集裝箱的每個value_type使用constexpr兼容的容器和constex

    0熱度

    1回答

    我一直在嘗試創建一個將其他形式的全球貨幣(如日元,克朗和英鎊)轉換爲美元的工作程序。我已經嘗試設置貨幣價值(轉換爲美元),並參考谷歌的經濟匯率。 該程序使用constexprs初始化對應於不同貨幣的數值,以及使用switch語句表示用於轉換的不同貨幣的字符。但是,我無法按預期工作。 在運行時,編譯項目構建後,任何值都會自動引用switch語句的「default:」段。 任何幫助,我將如何能夠得到這

    18熱度

    2回答

    以下代碼段在clang ++ 3.7.0下編譯,但被g ++ 5.3.1拒絕。兩者都有-std=c++14選項。哪個編譯器是正確的?任何人都知道標準會在哪裏談論這個?謝謝。 #include <stdexcept> using namespace std; constexpr int f(int n) { if (n <= 0) throw runtime_error("");

    6熱度

    2回答

    我似乎無法理解爲什麼有型const int的下面的代碼編譯: int main() { using T = int; const T x = 1; auto lam = [] (T p) { return x+p; }; } $ clang++ -c lambda1.cpp -std=c++11 $ ,而這其中有const類型雙不: int main()

    9熱度

    2回答

    在放寬了constexpr的規則之後,似乎隨處可以使用這些函數。它們可以在常量(constexpr)和局部(可變)變量上被調用。所以對我來說,它似乎只是編譯器的一個提示(如內聯)。我只是一直寫在任何地方,如果編譯器抱怨,將其刪除。所以編譯器似乎知道一切,如果一個函數可以在編譯時評估或不。爲什麼它不是默認行爲,爲什麼我必須標記爲constexpr?

    3熱度

    1回答

    我有一個不同於我的圖書館的正常值,稱之爲the_val。現在,我想要log_of_the_val成爲floor(log_2(the_val)) - 不是用C++代碼說話 - 當然,我希望它在編譯時發生。現在 ,用gcc,我可以做類似 decltype(the_val) log_of_the_val = sizeof(the_val) * CHAR_BIT - __builtin_clz(the_v

    9熱度

    2回答

    我最近開始在我的代碼中使用更多的C++ 11功能,並且一直在懷疑constexpr關鍵字的位置是否會在常量的類型之前或之後產生區別。 風格1: constexpr int FOO = 1; constexpr auto BAR = "bar"; 風格2: int constexpr FOO = 1; auto constexpr BAR = "bar"; 樣式2是我喜歡的方式來放置co