首页 > TAG信息列表 > Metaprogramming

missing semester - 学习笔记(汇总)

MIT - The Missing Semester of Your CS Education 课程笔记汇总,该课程介绍了一些实际开发所需要使用到的小东西。: The shell Shell Tools and Scripting Editors (Vim) Data Wrangling Command-line Environment Version Control (Git) Debugging and Profiling

missing semester - Metaprogramming

何谓“元”(meta): 大哉乾元,万物资始,乃统天。 --《彖》 道生一,一生二,二生三,三生万物。 -- 《道德经》 此处的元编程(metaprogramming)并不是C++的元编程魔法,而是关于流程的(即构建系统、代码测试以及依赖管理)。必须要指出的是,“元编程” 也有用于操作程序的程序” 之含义。 Build

C++ metaprogramming Hellow

example 1: 1 template<size_t N> 2 struct Fac { 3 enum { 4 value = Fac<N - 1>::value +N, 5 }; 6 }; 7 8 template<> 9 struct Fac<0> { 10 enum { 11 value = 0, 12 }; 13 };   example 2: 1 tem

C++核心准则T.120:只在确实有需要时使用模板元编程

T.120: Use template metaprogramming only when you really need to T.120:只在确实有需要时使用模板元编程   Reason(原因) Template metaprogramming is hard to get right, slows down compilation, and is often very hard to maintain. However, there are real-world examp

python-故意将变量放到调用者作用域内的函数

我有一个函数P().调用load_variables()应该给P变量x.load_variables应该能够接受默认值作为关键字参数. 如何才能做到这一点? 我尝试了以下方法: import inspect def P(): x = 1 load_variables(x = 2) return x def load_variables(**kargs): stack = inspect.sta

是否可以使用Python元类逆继承?

出于好奇,我很想知道是否有可能编写一个使父类的方法优先于子类的方法的元类.我想玩一会儿.不再可能重写方法.基类将必须显式调用子方法,例如使用对基实例的引用. class Base(metaclass=InvertedInheritance): def apply(self, param): print('Validate parameter')

没有属性样板的Python类

我的许多课程都类似于以下课程来代表帐户 class Account(object): def __init__(self, first, last, age, id, balance): self.first = first self.last = last self.age = age self.id = id self.balance = balance def _info(

Python枚举组合

我想基于两个现有的类创建一个新的Enum(IntEnum)类.有一个可行的解决方案,如下所示: from enum import unique, IntEnum from itertools import chain from collections import OrderedDict @unique class FirstEnumClass(IntEnum): a = 1 b = 2 @unique class SecondEnu

JavaBean规范是否已更新以反映注释的存在

我认为这应该很明显,但是我找不到. 既然字段可以有注释,我认为这应该在JavaBean规范中得到反映,但是我找不到它. 我的意思是: JavaBean是一种规范,允许您发现对象的属性,然后对其进行读写,从而以统一的方式处理对象. 由于现在可以对POJO的属性进行注释(例如,在Hibernate注释中),因此

c-通过参数启用std :: enabled_if时如何工作

我正在尝试了解enable_if的工作原理,并且我几乎了解除了场景3中的所有内容 https://en.cppreference.com/w/cpp/types/enable_if template<class T> void destroy(T* t, typename std::enable_if<std::is_trivially_destructible<T>::value>::type* = 0) { std::c

c-如何制作模板参数

如何创建带有任何类型的函数指针的元函数?在下面的代码中,如何摆脱“ decltype(& f)”? template <class FuncType, FuncType functionPointer> void runFunc() { functionPointer(); } runFunc<decltype(&f),f>(); 我不想单独指定f的类型;信息已经在f中了.我不希望通过定义来

c-可变参数模板异构容器

我需要实现具有可变元素的可变参数模板容器类,该类可以通过这些元素进行迭代.我的第一个想法是使用带有可变参数的std :: tuple成员的make类,但是不可能通过类似数组的方式(通过循环)从tuple中获取元素: struct A {void prnt(){std::cout<<"A\n";} }; struct B {void prnt(){st

如何从元组C过滤重复类型

一个过滤器如何从元组中过滤重复类型? 例如: using Tuple = std::tuple<int, double, int, double, std::string, std::string> using FilteredTuple = without_duplicates<Tuple>; 在其中without_duplicates的实现方式是生成以下FilteredTuple类型: std::tuple<int, double, std::

c – 转换元组类型

所以我是新手来提升MPL,我不知道如何将它与标准类型一起使用. 我想要一个转换这种类型的元函数: std::tuple<T0, T1, ..., TN> 进入: std::tuple< std::function<T0(std::tuple<T0, T1, ...>, std::tuple<T0, T1, ...>)>, std::function<T1(std::tuple<T0, T1, ...>, std::tup

c – 错误:已定义类模板

我有这个小模板类: namespace emple { template <class LinkedClass> class LinkedInList { public: LinkedInList() { active = false; } ~LinkedInList(){} LinkedClass* getNext() const

c – 什么特性/概念可以保证memsetting一个对象是明确定义的?

假设我已经定义了一个zero_initialize()函数: template<class T> T zero_initialize() { T result; std::memset(&result, 0, sizeof(result)); return result; } // usage: auto data = zero_initialize<Data>(); 为某些类型调用zero_initialize()会导致未定义的行

为什么Python的eval()拒绝这个多行字符串,我该如何解决?

我试图评估以下制表符缩进的字符串: '''for index in range(10): os.system("echo " + str(index) + "") ''' 我明白了,“有一个错误:语法无效,第1行” 有什么抱怨的?我是否需要缩进以匹配eval()语句,或将其写入字符串文件或临时文件并执行该操作或其他内容? 谢谢,解决方法:e

如何驱动C#,C或Java编译器在编译时计算1 2 3 … 1000?

在最近的一次采访中,我被问到一个非常奇怪的问题.面试官问我如何使用编译器功能计算1 2 3 … 1000.这意味着我不允许编写程序并执行它,但我应该编写一个程序,可以驱动编译器在编译时计算这个总和,并在编译完成时打印结果.作为提示,他告诉我,我可能会使用编译器的泛型和预处理器功能

c – 使用模板获取数组的大小和结束地址

您可以使用模板查找数组的长度. template<typename T, size_t N> size_t arraylen( T(&)[N] ) { return N; } 我想把这个想法更进一步. struct Foo { template< typename T, size_t N > Foo( /* ??? */ ) : ptr(?), size(?) { } char* ptr; size_t size; }; int m

找出C对象是否可调用

是否可以写出类型特征,例如is_callable< T>它告诉对象是否定义了operator()? 如果调用运算符的参数事先已知,则很容易,但在一般情况下则不然.当且仅当至少有一个重载调用运算符被定义时,我希望特征返回true. This question是相关的并且有一个很好的答案,但它不适用于所有类型(仅适用

c – 如何修复编译错误:非模板’iterator1’用作模板[复制]

参见英文答案 > Where and why do I have to put the “template” and “typename” keywords?                                    6个 我有一个嵌套模板类的问题.代码在VS2012中编译良好,但在VS2013和gcc 4.2.x中失败: #include <string>

Kotlin反射与Java的互操作性

在编写适用于Java和Kotlin的反射代码时,开发人员应该注意哪些警告? 例如,我有一个使用反射的现有库,它适用于Java.但是,当我在Kotlin中使用相同的代码时,我的反射代码似乎没有在字段上获取注释. 以下是我注意到的一些差异. 1.获取Class实例 // Example 1.1 - Java Class<?> userCla

c – hana :: tuple to auto \u0026\u0026 … args

有没有办法使用类似的东西: constexpr auto foo = hana::make_tuple(hana::type_c<Foo1>,hana::type_c<Foo2>); 有类似的东西: template < typename ... Ts > struct Final { constexpr Final(Ts && ... args) {} }; hana::unpack(foo, [] (auto && ..

c – 模板函数可以推导出lambda的参数吗?

带有函数指针的模板化函数可以推导出该函数指针的参数,如下所示: template<class... Args> void func(void (*ptr)(Args&& ...)) { //Do something useful knowing the Args... } 你可以用lambda作为参数吗? 不使用std :: function或编写类似function_traits的元编程特征类?即仅

c – 关于可变参数模板

我目前正在使用新的c 0x可变参数模板,这很有趣,虽然我对成员实例化的过程有疑问. 在这个例子中,我试图模拟强类型枚举,可以选择随机有效的强枚举(这用于单元测试). #include<vector> #include<iostream> using namespace std; template<unsigned... values> struct sp_enum;