static-if

    2热度

    1回答

    我想定义序列化变量的接口,其中取决于模板参数,序列化代码(true)或没有任何内容(false)被执行。序列化函数本身是模板化的归档和变量类型。 部分专用序列化函数还是专门用静态方法里面的类更好?代码是否正确?有没有更好的办法? 这是我的伪代码,我不确定它是否工作。 类的方法看起来是这样的: template<bool ser> struct MaybeSerialize; template

    3热度

    4回答

    是否有可能在C99中实现static_if? #define STATIC_IF(COND, ...) \ if (COND) MACRO1(__VA_ARGS__); \ else MACRO2(__VA_ARGS__); 如何在此处正确实施STATIC_IF(…)?根据COND参数或者应该传递给MACRO1或MACRO2,但这两个宏的参数看起来不一样。 COND是静态可

    13热度

    3回答

    我认为D的static if是一个有趣的语言功能。这提示了我的问题:编译语言是否还有其他编译器具有强大代码概念的示例,并且有语言工具可以访问它们? 例如,下面的代码提供类似于repr东西在Python: char[] repr(T)(T value) { static if (is(typeof(value.__repr__))) { // class T provides a "rep

    3热度

    1回答

    我希望能够避免在编译时知道条件为假时调用函数。现在我用的是这样的: template<bool Enabled> void fun(params) { //do nothing } template<> void fun<true>(params) { //do something with params. } 我不同意这种形式给出的喜欢的事情是,即使函数体