boost-mpl

    13熱度

    1回答

    優化編譯時性能 比方說,我有以下元函數: template <typename T> struct make_pair { using type = std::pair< typename std::remove_reference<T>::type, typename std::remove_reference<T>::type >; }; 難

    1熱度

    2回答

    我想寫一元函數,其(在Haskell)看起來大致是: gather :: [a] -> [a] -> ([a], [a]) gather (x:xs) (_:_:ys) = <something using x, xs, and ys> ...other pattern matches... 我能夠做到這一點使用卷我,自己自己的可變參數模板序列,但可以似乎不知道如何使用mpl來做到這一點。

    2熱度

    1回答

    消失下面的例子說明我的意思: #include <boost/mpl/map.hpp> #include <boost/mpl/for_each.hpp> #include <boost/mpl/pair.hpp> #include <boost/mpl/at.hpp> #include <boost/mpl/insert.hpp> #includ

    1熱度

    1回答

    當我嘗試編寫調用MPL代碼的元函數時,我似乎錯過了一些東西。後續的代碼失敗與INST2以下錯誤編譯,但INST1正常工作: 錯誤C2903:「適用」:符號既不是類模板,也不是函數模板 using namespace boost::mpl; template <typename VECTOR> struct first_element : mpl::at_c<VECTOR, 0> {};

    1熱度

    1回答

    我希望這個問題不會太過複雜。我意識到,元編程在類型上而不是在這些類型的對象上起作用;然而,我仍然試圖達到相同的結果,通過1)從類中檢索類型信息,然後2)在該類型信息上的元函數。 我的情況的解釋是簡化代碼摘錄如下: 我有矩陣,其中我打電話Matrix_Base一個模板類。與Eigen所採用的方法有點相似,我允許兩種可能的矩陣大小 - 在編譯時固定或在運行時固定。 Matrix_Base的簡化聲明爲:

    1熱度

    1回答

    我正在嘗試使用boost-mpl的地圖容器來執行基於策略的設計的POC。 (code here) 我繞過使用MPL ::地圖,默認情況下是空的我的政策: typedef boost::mpl::map<> DefaultPolicy; 獲得策略我試過如下: typedef typename boost::mpl::at<TPolicy, LogPK, DefaultLogP>::type Lo

    0熱度

    2回答

    我最近嘗試boost :: mpl,它看起來既可怕又可怕。有時編譯錯誤信息相當混亂。 這一次,我在下面的代碼獲得的問題: #include <iostream> #include <boost/type_traits/is_same.hpp> #include <boost/mpl/integral_c_tag.hpp> #include <boost/mpl/tag.hpp> #incl

    0熱度

    1回答

    以下使用mpl :: list來初始化一個boost變體。然後它序列化變體。它編譯和工作正常保存但不加載。編譯甚至加載失敗。有誰知道這個問題是什麼? 感謝 Attribute.h #include <string> #include <boost/archive/xml_oarchive.hpp> #include <boost/archive/xml_iarchive.hpp> temp

    0熱度

    2回答

    我想學習C++模板元編程。給定一個boost :: mpl ::類的向量我想計算該類的索引,其中一個靜態成員變量具有特定的值。 我找到了一個似乎可行的解決方案。但是,爲了正確編譯,我需要一些看似不必要的奇怪'包裝類'。這裏是我的代碼: #include <iostream> #include <boost/mpl/vector.hpp> #include <boost/mpl/size.hpp

    7熱度

    1回答

    我一直試圖去與Boost MPL交手。 作爲簡單的練習,我想: typedef vector_c<int, 1, 2, 3, 4, 5>::type example_list; typedef transform<example_list, times<_, int_<2> > >::type doubled_example_list; typedef transform<example_