[英]Function templates in c++?
對於學校,我有一個任務來創建功能模板,並將用戶輸入用於動態內存。 我的代碼不起作用,但是老師說這是正確的,只是我的編譯器不起作用。 這是我從編譯器得到的錯誤: 錯誤:從'int'到'int *'的無效轉換[-fpermissive]鍵= array [I]; 我使用的是Mi ...
[英]Function templates in c++?
對於學校,我有一個任務來創建功能模板,並將用戶輸入用於動態內存。 我的代碼不起作用,但是老師說這是正確的,只是我的編譯器不起作用。 這是我從編譯器得到的錯誤: 錯誤:從'int'到'int *'的無效轉換[-fpermissive]鍵= array [I]; 我使用的是Mi ...
[英]Inlining Template Specialization
如果我有一個標題foo.h,我將其包含在我的項目中,當它包含的內容時,它似乎工作正常: 但是當我向foo.h添加一個specalization時,我得到一個定義規則(ODR)錯誤: 顯然,我可以通過inline專業化來解決這個問題。 我的問題是,為什么我需要? 如果模板沒有違 ...
[英]Template function dependent on non-type parameter
是否可以基於非類型參數定義重載模板函數? 以下情況: 現在可以通過非類型參數更改SetupMem的返回值嗎? 例如: 這樣, TemplateCaller()不會使用所需的模板參數顯式調用SetupMem (因此避免類似: SetupMem<uint64, size ...
[英]Comparison operator for std::vector<T> fails to find comparison operator for T
以下非常簡單的代碼將無法編譯 https://godbolt.org/g/zn6UgJ 不會編譯我的任何編譯器。 而以下 https://godbolt.org/g/o4pc1b 編譯得很好,這讓我覺得std::vector<T>比較運算符在T的命名 ...
[英]C++ template class, template member friend function matching rules
我有一個帶有模板化友元函數聲明的模板化類,當用更直接但看似相同的表達式表示時,它沒有簽名匹配: 鏈接到在線編譯器的示例 Derived<R(Args...), T>內部成員定義(例如,在bar()的主體中),類型匹配,增加了我的困惑: 是否存在圍繞模板類模板成員 ...
[英]Why does std::is_same give a different result for the two types?
在下面的代碼中,為什么在編譯時調用fun的兩種方法fun(num)和fun<const int>(num)給出不同的結果? ...
[英]SFINAE : Delete a function with the same prototype
我想知道這段有效的代碼有什么區別: 而這個不起作用: typename = is_ref<T>和is_ref<T> = true之間的真正區別是什么? ...
[英]How does C++ function template specialization work?
我正在閱讀C ++ Primer(第5版) ,16.5,定義函數模板專業化,並對作者給出的示例感到困惑,讓我們看一下以下模板函數: 及其專業版本: T類型將是const char * ,但是我不認為該函數可以是模板函數的特殊化版本,因為我認為const char* const & ...
[英]operator overloading using template
我正在編寫一個名為Double的類,該類擴展了c ++中的內置類型“ double”。 它具有類型為“ double”的數據成員。 對於Double類,我需要重載許多基本的算術運算符,例如“ +”,“-”,“ *”,“ /”。 例如,“ +”運算符以這種方式重載: 和“-”運算符以 ...
[英]Why is std::swap not using swap idiom?
正確使用std :: swap是: 它有點冗長,但它確保如果a,b有更好的交換定義它將被選中。 所以現在我的問題是為什么std::swap沒有使用這種技術實現,所以用戶代碼只需要調用std::swap ? 所以這樣的事情(為了簡潔而忽略noexcept和約束): ...
[英]Template function which takes lambda with variadic parameters
教育任務:想要編寫一個接受函數對象及其參數的函數,並使用完美轉發進行調用: 編寫了函數: 但是出現錯誤: 語法有什么問題? 怎么修? ...
[英]Create a template function for map<T1,T2> iterators
因此,我嘗試制作4個模板功能來執行以下操作:對通用容器求和,對映射求和,對通用容器迭代器求和和對通用映射迭代器求和。 我已經做到了前三個,但是我不知道和映射的迭代器。 這是我的代碼: Sum.hpp TEST.CPP: 當我運行Sum()函數時,它將嘗試調用Sum Ge ...
[英]Checking Datatypes of Template Function
我正在嘗試基於輸入模板創建一個函數。 它讀取一個文件。 我基本上只是檢查所需的輸入是否為字符。 如果是,那么我們將復制讀取的字符,但如果不是,我們將復制 bool/int/float/double。 也許我只是錯誤地使用了 std::is_same。 我的代碼無法編譯,因為它看起來無法識別檢查 ...
[英]function overloading with std::function and generic lambdas: std::string preferred over int
令人驚訝的是,當嘗試編譯它時,由於lambda函數的auto參數已解析為std::string ,並且編譯器在調用test時不知道如何將std::string轉換為int或Widget ,因此會出現錯誤。 。 但是,我不知道為什么當第一個調用成功時,編譯器選擇了第二個invok函數而不是第 ...
[英]Why isn't automatic downcasting applied to template functions?
有人問這個關於字符串附加的問題 。 這是string s; s = s + 2; string s; s = s + 2; 沒有編譯。 人們給出了答案,說明operator+被定義為模板函數而operator+=不是,因此不應用自動向下轉換( int(2) to char(2) )。 ...
[英]hide template function declaration in library
首先,大局。 我有一個Logger課。 我為該類創建了一個簡化的接口,並為該接口創建了一個庫。 我想使用pimpl隱藏Logger類的實現,因此用戶不需要Logger的標頭。 我在使用模板功能時遇到了麻煩... Logger標頭的定義如下 第一版 我已經創建了這樣的 ...
[英]Executing all Methods pointed to by a Template Parameter Pack
我可以制作一個方法(=成員函數)指針的模板參數包嗎? 如果是,是否可以使一個(模板)函數執行其模板參數包中的所有方法? 簡化: 指定方法的執行順序無關緊要。 所有方法指針都具有相同的簽名(例如return bool ,具有相同的基類,不帶參數) ...
[英]How does C++1z standard define the correct location of attributes in a template function declaration?
我注意到C ++ 11和C ++ 14標准中的18.8 / 1節在<exception>標頭摘要中包含以下聲明: 在最新的C ++ 17草案中,相同的聲明顯示為 這是否意味着在C ++ 17中更改了屬性的語法,還是僅僅糾正了前一行的錯誤? 在7.6和14.5.6中, ...
[英]Calling a template function from a C file
我知道模板不是用C定義的。但是,就我而言,我有一個用C ++編寫的API,供用C編寫的應用程序使用。我希望在該API中添加模板功能。 該函數在abc.cpp中定義如下: abc.hpp中的聲明如下: 從xyz.c調用此函數為: 但是,它在abc.cpp和abc.hpp中 ...
[英]Pull Apart Function Type With Specialized Function
這個問題的答案使用類模板來區分函數類型: 當我研究這里所做的事情時,我試圖重寫function_args 。 我嘗試使用一個函數來執行此操作,以消除對decltypeargs模板的需要。 但是發現自己陷入了語法錯誤: 我的希望是調用decltype(myTry&l ...