constexpr

    0熱度

    1回答

    下面的程序工作得很好。 #include <iostream> #include <type_traits> template <typename DummyT = void> struct wrapper { static_assert(std::is_same<void, DummyT>::value, "Only void, please"); static c

    3熱度

    2回答

    我有以下代碼 constexpr int into(int a,int b) { int c=a*b; return c; } int main() { constexpr int &n=into(5,5); } 和我已讀(在MSDN) 關鍵字constexpr引入在C++ 11和在C++ 14中得到改進。它意味着不斷的表達。像const一樣,它可以應用於變

    8熱度

    1回答

    是這些成員變量之間的區別: struct my_class { static const int i = 0; static constexpr int j = 0; }; 如果我的理解是正確的,我能同時使用i和j的編譯時間常數。也就是說,std::array<int, my_class::i>和std::array<int,my_class::j>都應該有效。

    0熱度

    1回答

    這是我發現並描述here的問題的延續。 假設你有一個包含static constexpr功能和一個std::bitset一個類型別名(或任何類型的你希望使用const表達式的結果模板)(如下所示)一個結構: struct ExampleStruct { static constexpr std::size_t Count() noexcept { return 3U;

    5熱度

    1回答

    我一直在讀一本關於C++ 14/11的書。我剛讀完一篇關於constexpr關鍵字的章節。我知道它的用途。我瞭解它如何用於類和類成員函數。但是,我應該多久使用一次constexpr?我是否應該在代碼中使用它,我知道它永遠不會用於創建contstexpr對象? (以防萬一,因爲它不花我什麼,對吧?)

    2熱度

    3回答

    const-vs-constexpr-on-variables 什麼的傢伙說,大約constexpr是正確if double使用(或課程的float)。但是,如果將var類型從double更改爲像int,char等整數類型,則一切正常。爲什麼會發生? http://ideone.com/DAWABE int main() { const int PI1 = 3; conste

    1熱度

    1回答

    兩個GCC(5.3.0)和鏘(3.8.0)同意,這是有效的代碼: constexpr std::integral_constant<size_t, 0> n{}; std::get<n>(std::make_tuple(123)); 然而,他們不同意這一點: std::integral_constant<size_t, 0> n; std::get<n>(std::make_tuple(1

    1熱度

    1回答

    實際代碼更復雜,但我能夠將其降低到此示例。 一切工作正常,直到我試圖用一個指針指向MyPackets_t ::類型(取消註釋調用到foo()在main()) 在這一點上,以使應用程序鏈接,類型需要一個定義。 我正在努力與定義的正確語法。評論出模板...應該做的伎倆。然而,它產生了一個錯誤「PacketCollection :: types的模板參數與原始模板不匹配」。 嘗試這樣 - 模板<> co

    0熱度

    1回答

    我通過@CaffeineAddict從this comment得到了下面的代碼片段。 #include <iostream> template<typename base_t, typename expo_t> constexpr base_t POW(base_t base, expo_t expo) { return (expo != 0) ? base * POW(base,

    3熱度

    1回答

    我有一個模板類: template <int N> class Object<N> { // ... } 例如,我想打一個函數,它增加了裏面的東西,並返回類int N參數設置爲最大值其中: template <int N1, int N2> Object<std::max(N1, N2)> AddObjects(const Object<N1> & object_1, const O