type-deduction

    2熱度

    1回答

    如果我理解正確,我們有3例在類型扣除: 1)參數不是引用也不是指針。 int x = 5; template< typename T> func(T param) template< typename T> func1(T & param) func(x) func1(x) 在兩種情況下T被推導爲 int 2)PARAM 是指針或

    12熱度

    1回答

    下面的代碼無法使用gcc 7.1.0進行編譯,它會在main的第二行中提供錯誤數量的模板參數。這個版本的GCC是supposed to implement模板參數類模板的推導。 我認爲編譯器應該能夠推導出酒吧,這意味着我不應該明確指定兩個參數的類模板參數T2(Bar<int, int>)給出的C++17 draft它說的第17.8.1.3,「可以推導出(17.8.2)或從默認模板參數獲得的尾隨模板

    4熱度

    3回答

    讓foo是函數: template< typename T > void foo(T&& a){} 什麼類型將T推斷爲foo以下呼叫: foo(0); // is T here int or int&& ? int a = 0; foo(a); // is T here int or int& ?

    3熱度

    1回答

    考慮此程序: template<typename T> struct Foo { void foo(const T&) {} void foo(T&) {} }; int main() { Foo<double&> f; double d = 3.14; f.foo(d); //complains that foo() is ambi

    4熱度

    1回答

    我有一個叫做Shape的類,它可以從任何可迭代的類中被初始化,並且一個名爲Array的類只包含一個Shape。但是,我得到一個編譯錯誤,當我嘗試初始化Array我無法解釋: class Shape { public: template<typename Iterator> Shape(Iterator first, Iterator last) : m_shap

    -1熱度

    1回答

    我的Visual Studio 2017年不會致使識別此代碼,不需額外編譯類型演繹指南: template<typename T> class Example{ public: Example(T& pVal) :val(pVal){} T& val; }; //type deduction guide for Example constructor te

    0熱度

    1回答

    我有這樣定義的函數模板: // #1 template <typename R, typename T> R func(T arg) { ... } // #2 template <typename T> T func(T arg) { ... } 我想類型T被編譯器總是被扣除,因此: func<int>(my_var); // calls #1 func(my_var); //

    3熱度

    2回答

    在main函數中,我創建了一個變量const int指針,將其指定給由auto&聲明的變量。然後使用decltype(x)來檢查類型。我預計這種類型是const int*。但是is_same返回false。 int main() { int a = 10; const int * cp_val= &a; auto& x = cp_val; bool is_

    3熱度

    2回答

    我寫這個模板功能的雙for循環必須被執行了很多,曾經被用宏做: template <typename TYPE_OF_ENTITY, typename LAMBDA_FUNC> void foreach_t(list faces, LAMBDA_FUNC func) { for(...) for(...) func(pEnt) } 這確實行之有效,可以

    3熱度

    1回答

    我試圖聲明一個類「Lambdas」,它將lambdas(及其類型信息)提供給另一個類「Test」。 Lambdas還在「lambda」中持有「this」對具體Test實例的引用,以便訪問Test公共成員。 我這樣做是爲了一旦定義lambda表達式,然後通過decltype其他地方推斷類型() 但我得到的錯誤:成員訪問不完全類型: template <typename T> struct Lamb