decltype

    2熱度

    3回答

    我有一個問題,爲const提供正確的重載,而不是使用新的返回值語法提供const getter函數。 在我的課PhysicalNode我用新的返回值語法定義了一個getter函數。這是需要的,因爲getter的返回類型取決於成員的類型。 class PhysicalNode { private: solver::EnergySolver energySolver_; ///< The

    27熱度

    2回答

    我正在閱讀C++ Primer,並且在表達式產生對象類型時以及產生對象的引用類型時無法理解。 我引用這本書: 當我們將decltype到不是一個變量表達式,我們得到的類型>的表達產量。 一般來說,decltype會返回一個表達式的引用類型,該表達式可產生 對象,該對象可以位於該賦值的左側。 考慮下面的代碼: int i = 3, *ptr = &i, &ref = i; decltype(ref

    10熱度

    1回答

    我瞭解到,在這樣 auto var = expr; 基本上宣告使用自動變量是喜歡拍照的expr類型和剝離&/& & -references,並從它的所有頂級常量性和volatileness。這是否意味着上述行是正好等同於以下內容? std::remove_cv<std::remove_ref<decltype(expr)>::type>::type var = expr;

    2熱度

    2回答

    是否可以使用decltype和\或std :: remove_reference調用析構函數(不使用操作符刪除)?以下是一個示例: #include <iostream> #include <type_traits> using namespace std; class Test { public: Test() {} virtual ~Test() {}

    0熱度

    1回答

    考慮下面的代碼: template <class Crtp> struct Base { const float& get(const short int i) const {return std::get<0>(tuple);} const double& get(const int i) const {return std::get<1>(tuple);} c

    7熱度

    2回答

    下面的代碼工作爲:目標,左聯和操作:sum(1,2,3,4); 但是,它不會正確的sum(1,2,3,4,5)或sum(1,2,3,4,5,...)工作。任何超過4個參數給出了錯誤: error: no matching function for call to sum(int, int, int, int, int) ================================= templ

    2熱度

    2回答

    我: 模板程序unarchive,需要一個字典和密鑰並且基於(T)通過可以專門用來產生T 一個構造一個struct它利用unarchive模板類型構建其成員 一個例子可能是下列: template <typename T> T unarchive(const dictionary_t&, key_type key); struct foo { foo(const dictiona

    3熱度

    1回答

    是否可以使用decltype來投射一個值? 例如,讓我們說,我們有以下模板: template<typename Container> auto findInposition(Container& c,int position)->decltype(*(c.begin())) { if(std::distance(c.begin(),c.begin()+position)<c.siz

    9熱度

    1回答

    考慮following code: struct test { auto func() -> decltype(data) {} // ERROR int data; }; int main() { test t; t.func(); } 它提供了以下錯誤: main.cpp:2:29: error: 'data' was not decla

    6熱度

    1回答

    我知道i的類型在main()以下是int&。這就是爲什麼它必須被初始化。 int& f(){ static int i = 1; return i; } int main() { decltype(f()) i = f(); } 但是用在標準段落5p5,我的結論是表達f()已鍵入int作爲參考被丟棄。 從7.1.6.2p4,如果表達式f()是一個左值,考慮到引用是從函數返回中