specialization

    0熱度

    1回答

    問題出在計算機圖形C++項目中,我想計算比例域和3D矢量域的梯度。我們知道它們的梯度是不同的:比例場具有3D矢量梯度,而3D矢量場具有3×3矩陣梯度。由於所有其他代碼都是相同的,我正在使用模板來重新使用代碼。但是我遇到了專門的成員函數中的一個問題,它有不同的代碼來計算不同數據類型的梯度。最小化的代碼如下: //======== Main.cpp ======== #include "Render

    3熱度

    1回答

    我玩弄單身的專業化: {-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} module Data.Test where data SingBool (b :: Bool) where STrue :: SingBool 'True SFalse ::

    0熱度

    1回答

    我有一個模板類美孚: template <class A, A value, class B> class Foo {}; 而且我有一個函數模板validateType() template <class T> bool validateType() { return false; } 現在我想要將它專用於某些類型,包括Foo,以便該函數在編譯期間執行一些static_as

    0熱度

    1回答

    我只是想知道,我在文檔 中的任何地方搜索過,但LLVM是否支持非具體類型? 通過非具體的我的意思是,直到運行時輸入類似於「iN」,然後可能運行一種monomorphization pass(請參見下面的示例)以將「iN」類型具體化爲「i56」,具體取決於運行時參數。 我不要希望使用LLVM ORC JIT API,它可以簡化所有事情,但不是我想要使用的東西。 以下是我需要應用的轉換的示例場景。 (

    0熱度

    1回答

    首先在我的ER-型號我有具有IS-A有兩個不相交的子實體儲蓄賬戶和支票賬戶關係的賬號實體。 但是我有一個客戶實體存款人與賬戶關係的實體,這樣的用例如下面的ER圖。 因此,我的ER翻譯成這樣的表: 客戶(CID,CNAME) 存款(CID,帳戶數) 儲蓄賬戶(賬號,平衡,利率) 支票賬戶(帳戶數,平衡,透支量) 所以最後,我只取2個表儲蓄賬戶和檢查賬戶從IS-A關係。 然後出現問題,創造存款表,我採

    -1熱度

    1回答

    我使用的是Mac鐺並具有明確的分工: $cat my.cpp #include<type_traits> using namespace std; template<int i> struct place_holder{}; place_holder<1> _1; place_holder<2> _2; template<typename T> struct is_placehol

    0熱度

    1回答

    是否有可能有專門的通用協議的協議?我想是這樣的: protocol Protocol: RawRepresentable { typealias RawValue = Int ... } 這並不編譯,但是當我嘗試從一個協議實例訪問init或rawValue,其型號爲RawValue,而不是Int。

    3熱度

    2回答

    我有一個std::vector<bool>實例(foo,說),我需要寫一個返回true如果所有元素都true功能。 我用 return *std::min_element(foo.begin(), foo.end()); 實現這一目標,但是這已經讓我思考:你知道的最小元素false,如果容器包含至少一個false值。換句話說,你不需要遍歷整個容器到end(),這意味着專業化std::min_e

    0熱度

    1回答

    我試圖特化一個特質,並且由於「衝突的實現」而無法編譯。但我對專業化的理解是更具體的實現應該覆蓋更通用的實現。這裏是一個非常簡單的例子: mod diving { pub struct Diver<T> { inner: T } } mod swimming { use diving; pub trait Swimmer { fn

    3熱度

    2回答

    我會盡量簡單解釋我目前的問題。它可以很容易地解決,但我迄今發現的唯一解決方案並不能滿足自己,也許你會向我表明解決方案需要的下一級間接性。 我在這裏使用CRTP,即使這不是問題的關鍵。下面是一段代碼,重現我的問題: template <typename T> class A { public: static void p() { T::p();