metaprogramming

    5熱度

    3回答

    嗨我想創建一個幫助羣體定義ruby方法作爲私人類方法。一般來說,可以使用private_class_method關鍵工作將方法定義爲私有類方法。但我想在下面的樣式來創建一個幫手: class Person define_private_class_methods do def method_one end def method_two end

    0熱度

    1回答

    我需要一個類型trait,確定一個類是否是給定模板的專業化。 This answer提供了一個適用於大多數情況下的實現。 但是,它似乎不適用於靜態constexpr成員類型。在下面的例子中(也wandbox可用),最後static_assert上鏘和GCC主幹失敗: #include <type_traits> // from https://stackoverflow.com/questio

    3熱度

    2回答

    是否有使用類似的方式: constexpr auto foo = hana::make_tuple(hana::type_c<Foo1>,hana::type_c<Foo2>); 的東西,如:由於與該代碼 template < typename ... Ts > struct Final { constexpr Final(Ts && ... args) {} }; han

    1熱度

    1回答

    我試圖使用hana::second一對訪問hana::type ... namespace hana = boost::hana; using namespace hana::literals; struct Key {}; struct Foo {}; int main() { auto test = hana::make_tuple( hana::make_p

    3熱度

    1回答

    銷燬Singleton對象我有Python中的Singleton對象: class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super(Singlet

    0熱度

    2回答

    我正在嘗試動態創建2個在字符串中定義的函數。代碼: def main(): fns = ''' def plus_one(x): return x + 1 def plus_two(x): return plus_one(x) + 1 ''' exec(fns) result = eval('plus_two

    1熱度

    1回答

    我有一個具有單一功能具有相對複雜的API協議: defprotocol Foo do def complex(foo, x, y) end 我想提供一種方法來實現此協議爲共同和更簡單的用例。一些實驗後,我想出了以下內容: defmodule Bar do @callback simple(any, any) :: boolean defmacro __usin

    2熱度

    2回答

    #include <type_traits> #include <functional> struct Chains {}; struct Stages { Chains mutating_chains; Chains sideffect_chains; Chains write_chains; void forall_chains(c

    0熱度

    1回答

    我正在使用SFINAE構建一個基本的序列化庫。 比方說,我有一個類實現了一個通用的process方法,該方法讀取任何類型(允許用戶擴展)並對其進行序列化。我正在使用std::enable_if將此方法專用於不同的模板參數類型。下面是一個例子: class OutputSerializer { public: OutputSerializer(std::ostream& str) :

    1熱度

    1回答

    有一些有趣的方法可以在類中的每個方法之前運行方法,例如Python: Do something for any method of a class? 但是,該解決方案不允許我們傳遞參數。 Catch "before/after function call" events for all functions in class有一個裝飾解決方案,但我不想回去裝飾我所有的課程。 是否有一種方法可以運行依