boost-mpl

    1熱度

    1回答

    有沒有辦法在編譯時決定兩個運行時代碼路徑之一?我知道函數重載可以用來完成這個壯舉,但是隨着代碼大小的增加,我的兩個函數都被編譯並鏈接到程序中。有沒有辦法避免這種大小的開銷? 從本質上講,我想要做的是: #include <boost/mpl/if.hpp> #include <boost/type_traits/is_abstract.hpp> template <class T>

    7熱度

    1回答

    所以我有一個模板類,我想接受一個std :: map,其中數據類型是一個原始指針或一個std :: unique_ptr。然後在這個類我想獲得的基本指針的類型: typedef typename boost::mpl::if_< boost::is_pointer<typename Container::mapped_type>, typename Container::map

    3熱度

    1回答

    我有一個Visual Studio 2008 C++ 03項目,其中工廠方法用於基於一組位標誌使用大型開關/ case語句創建mixin類。 例如: inline boost::shared_ptr<MyInterface> Create(DWORD flags) { int a, b, c; /* ... */ /* 0x000000 - Mixin

    5熱度

    1回答

    用C++ 11我有像 #include <boost/mpl/vector_c.hpp> #include <boost/mpl/size.hpp> #include <boost/array.hpp> #include <iostream> namespace mpl = boost::mpl; template<std::size_t ... Args> struct Te

    2熱度

    1回答

    如何添加數字? typedef boost::mpl::vector< boost::mpl::int_<1>, boost::mpl::int_<2>, boost::mpl::int_<3>, boost::mpl::int_<4>, boost::mpl::int_<5>, boost::mpl::int_<6> > ints; typedef boost::

    3熱度

    1回答

    我從另一個線程使用constexpr和C++ 11得到了這個編譯時字符串比較(http://stackoverflow.com/questions/5721813/compile-time-assert-for-string-equality)。它的工作原理與常量字符串像「OK」 constexpr bool isequal(char const *one, char const *two) {

    1熱度

    2回答

    什麼是元函數類和佔位符和高階函數之間的區別?

    11熱度

    1回答

    我目前對boost :: mpl的概念樣本做了一些證明,並且在理解lambda函數如何使用佔位符時遇到了一些困難。 我意識到我可以將元函數封裝在元函數類中,以使高階函數能夠訪問嵌套的函數,並意識到您可以通過使用mpl :: lambda封裝允許放置元函數持有人。 這實際上是如何工作的?我無法將頭部纏繞在lamda和佔位符實際上在封面下做的事情上。

    1熱度

    1回答

    我有一個類模板Z當傳遞一個類型,它是一個特定的模板N的任何實例,我想專注的任何實例: struct L { template <typename S> void foo(S &) {/*...*/} }; template <class T> struct M { template <typename S> void foo(S &) {/*...*/} }; t

    2熱度

    1回答

    可能重複: Where and why do I have to put the 「template」 and 「typename」 keywords? 我通過這本書「C++模板元編程:概念,工具,以及從升壓和超越技術」的學習模板編程和不知何故,我陷入了第一次鍛鍊。 任務是編寫一元函數add_const_ref<T>,如果它是引用類型,則返回T,否則返回T const &。 我的做法是: temp