cost 314 ms
顯式模板實例化與概念約束

[英]Explicit template instantiation vs concept constraints

假設我有一個 function 或一個 class 模板,它應該只適用於某些類型,例如std::wstring和std::string 。 我知道概念可以用來對模板施加約束,所以我會使用這樣的東西:template <typename T> concept StringLike = st ...

是否可以使用需要不存在 function 的 SFINAE 來定義 function?

[英]Is it ok to define a function using SFINAE that requires non-existance of the function?

此問題中的代碼基於此答案。 我對它如何產生 output 以及它是否都定義良好感到有點困惑 Output 與 gcc (與 clang 和 msvc 相同): 如果is_fooable_v<moo>為false ,則 SFINAE 不會丟棄foo模板,然后moo為“fooable”, ...

在惰性函數式語言的模板實例化求值器中實現“case”表達式有困難嗎?

[英]Difficulty of implementing `case` expressions in a template-instantiation evaluator for a lazy functional language?

我正在關注 SPJ 的“實現函數式語言:教程” ,我堅持練習 2.18(第 70 頁),轉載如下。 這是關於書中描述的簡單惰性函數語言的模板實例化評估器的章節(類似於迷你 Miranda/Haskell): 練習 2.18。 為什么很難將case表達式引入模板實例化機? (提示:想想instan ...

在未使用的默認成員初始值設定項中使用仍然是 ODR 使用嗎?

[英]Is use in an unused default member initializer still an odr-use?

在默認成員初始值設定項中使用是否仍然是 odr-use,即使默認成員初始值設定項未被任何構造函數使用? 例如,這個程序是否格式錯誤,因為g<A>是 odr-used 並且因此它的定義被隱式實例化? MSVC 認為不。 Clang、GCC 和 ICC 認為是的。 https://g ...

為什么 = default 成員初始值設定項請求實例化 unique_ptr 析構函數而 {} 不?

[英]Why does = default member initializer request instantiation of unique_ptr destructor while {} does not?

這是這個問題的后續: Does PIMPL idiom actually work using std::unique_ptr? 完整的例子使用了多個文件,所以為了這個問題我將在這里減少它。 完整的工作示例在這里: https://wandbox.org/permlink/AepAJYkbRU4b ...

C++:實例化模板方法基於另一種方法的重載

[英]C++ : Instanciate template method based on overloads of another method

我有一個方法(在 class A 中)有很多不同的重載,我正在制作一個從 A 繼承的 class B,改變方法的行為以在執行它最初的操作之前執行某個操作。 問題是必須對所有重載進行此更改,這可以使用模板來完成。 實際上這確實有效,但是使用模板意味着將方法的新代碼放在 class 聲明中(即在標題中) ...

具有 class 模板的不同專業化和專業化定義在其簽名中具有其他專業化的功能

[英]Having different specialization of a class template and the specialization definitions have functions with other specializations in its signature

所以我有一個 class 模板,例如模板.h 我將float和double特化分成不同的.h文件浮動.h 和雙倍.h 我將這三個文件按順序包含在我的.cpp文件中,它工作正常但我需要將另一個 function 添加到將Something作為參數的float專業化 然后在template.h之后包含D ...

如果一個函數定義有一個類模板類型的參數並且沒有使用它(它的成員),那么它是否被實例化?

[英]If a function definition has a parameter of class template type and didn't use it (its members) then is it instantiated?

從上一個示例中,我在這里發布了有關何時實例化template的信息? ,我得到的答案是,只有在使用模板時,編譯器才會實例化它。 但是看看這個例子: 如您所見,我已經聲明了一個顯式模板實例化Pow<int>但尚未定義它。 該程序運行良好,並且不會抱怨缺少Pow<int&gt ...

什么時候實例化模板?

[英]When a template is instantiated?

template在使用之前不會實例化的事實,例如,如果我有這個類模板: 那么模板究竟是什么時候實例化的呢? 那么Pow<int>是否在聲明func(Pow<int>)時實例化? 如果我沒有在main()使用Pow<int>那么它是否因為它在fun ...

模板實例化導致函數膨脹

[英]Template instantiation causing function bloating

當我開始對 C++1x 特性進行更深入的試驗時,我遇到了一些想法。 例如當有這個構造template<unsigned int N> unsigned int functionForTest(const char (&a)[N]); 以及它的用法 functionForTest( ...

如何使用“if constexpr”正確實現“operator()”,以便它與 std::generate 一起使用?

[英]How do I properly implement "operator()" with "if constexpr" so that it works with std::generate?

我試圖編寫一個 class ,它將用容器具有的類型填充隨機數的容器: 但是這里某處發生了錯誤,因為當我調用 std::generate 時,我得到了很多錯誤: 我認為這可能是因為if constexpr但如果只是離開: 然后仍然返回相同的錯誤。 這是我得到的錯誤列表: function 調用如下 ...

在模板中定義的朋友 function 的實例化

[英]Instantiation of friend function defined inside a template

這是對這個問題的跟進。 最初的案例是另外一回事,但在我寫一個糟糕的答案和 OP 澄清的過程中,事實證明我們可能需要語言律師的幫助來了解發生了什么。 在 C++ 中的思考 - 實用編程第 2 卷中,可以找到以下示例(我的意圖,在線此處): 他們繼續解釋(強調我的): 這個和前面的例子有一個重要的區別: ...

C++ - 返回一個模板參數未知的模板

[英]C++ - Return a template with unknown template argument

我想從可以包含許多不同類型數據的文件類型加載圖像:像素可以編碼為float s、 double s、 unsigned char s、 char s(類似於 TIF 文件)。 加載后我將對圖像數據進行的所有處理取決於加載的數據類型。 我已經有了一個函數,它可以從處理我的文件類型的 C 中的外部庫中加 ...

模板顯式實例化如何工作以及何時工作?

[英]How template explicit instantiation works and when?

這是 C++ primer 第 5 版中的一個練習: “練習 16.26:假設NoDefault是一個沒有默認構造函數的 class,我們可以顯式實例化vector<NoDefault>嗎?如果不能,為什么不呢?” 這是我的猜測: 是的,我們可以實例化它: 代碼工作正常,但如果我取消 ...

如果類是不完整的類型,為什么要編譯?

[英]Why does this compile if the class is incomplete type?

在 Memory.h 我有: 在 main.cpp 我有: 即使在我粘貼到 Memory.h 之后 Foo 才完全定義,這也可以很好地編譯。 我很困惑為什么會編譯。 是不是編譯器粘貼到Memory.h后的等價代碼在main.cpp中是這樣的: ??? 因為這不能編譯,所以我收到錯誤: ...

使用 decltype 顯式實例化 function:適用於 g++ 但不適用於 Visual C++

[英]explicit instantiation of function using decltype : work on g++ but not on Visual C++

此代碼在 G++ 上運行,但不在 Visual C++ 上運行。 這是來自 Visual C++ 的錯誤:- error C2206: 'foo': typedef 不能用於 function 定義激勵:我不想重復 function 簽名進行顯式實例化。 我修改了https://stackove ...

是否可以使用單個定義同時定義 function 的 const 和常規版本? (使用模板、自動、decltype 等)

[英]Is it possible to define both const and regular version of the function with a single definition? (using templates, auto, decltype, etc)

假設我正在為單鏈表編寫迭代器和 const_iterator。 假設我有以下課程: 我的問題是是否有可能以某種方式替換這些行 具有單個定義(可能使用模板參數 isConst)並由編譯器推導出 const 說明符? 當 isConst = true 時,我希望 * 成為 const T& o ...

檢查默認刪除的 function 模板是否明確專門用於特定類型?

[英]Check whether a default-deleted function template is explicitly specialized for a specific type?

(這個問題已經過大量編輯,抱歉。) 假設我有幾個非常量的 function 模板,默認被刪除: 並且有一些明確的特化作為一般情況刪除的例外。 我想編寫代碼(例如特征 class?),給定這些函數之一的標識符和類型 T,在編譯時檢測指定的 function 是否明確專門用於類型 T。代碼需要通用的 ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM