草庐IT

dependent-type

全部标签

c++ - C++ 中的静态鸭子类型(duck typing)

C++对模板参数给定的类型有某种鸭子类型(ducktyping)。我们不知道DUCK1和DUCK2是什么类型,但只要它们可以quack(),它就会编译并运行:templatevoidlet_them_quack(DUCK1*donald,DUCK2*daisy){donald->quack();daisy->quack();}但是写起来有点不方便。当我完全不关心实际类型DUCK1和DUCK2是什么,而是想充分利用ducktyping的想法时,那么我想要一些与上面略有不同的东西:我想省略编写一个重复且几乎没有意义的模板参数列表(想象一下如果有7只鸭子类型(ducktyping)会发生什么

c++ - XCode 4.5 'tr1/type_traits' 找不到文件

我使用wxwidget库,但遇到以下问题:#ifdefined(HAVE_TYPE_TRAITS)#include#elifdefined(HAVE_TR1_TYPE_TRAITS)#ifdef__VISUALC__#include#else#include#endif#endif这里找不到#include。我使用AppleLLVM编译器4.1。(使用c++11方言)。如果我切换到LLVMGCC4.2编译器,我在那里没有错误,但主要问题是所有c++11包含都不起作用。我怎样才能使用GCC编译器,但使用c++11标准或使LLVM可以找到?如有任何帮助,我们将不胜感激。

c++ - Boost Type Erasure的实践与发现

我正在阅读有关boosttypeerasure的文章,我正在尝试找出潜在的用途。我想在阅读有关该主题的大量文档(看起来很大)时稍微练习一下。引用最多的应用程序领域是客户端和服务器之间的网络/交换数据。你能推荐一些其他的例子或练习,我可以在其中玩这个库吗? 最佳答案 类型删除在非常多的情况下非常有用,以至于它实际上可能被认为是一种从根本上缺失的语言功能,它将泛型和面向对象的编程风格联系起来。当我们在C++中定义一个类时,我们真正定义的是一个非常具体的type和一个非常具体的interface,而这两个东西不一定需要相关。type处理数

c++ - 如何使用 type_traits 生成依赖于类特化是否存在的代码?

背景我正在尝试写一个classtemplateHasher这将以两种不同的方式实现,具体取决于是否std::hash已为T实现:templatestructHasher{std::size_thash(Tt)const;//implementasA{std::hashh;returnh(t);}//orB{std::hashh;returnh(t.to_string());}};如果std::hash已经专精了,想用。如果没有,我希望T有一个to_string()函数返回一个key供我哈希。例如,根据cppreference,如果T是longlong、指针或std::string,我想

c++ - C++ 中的 "error: Expected a type, got ' 类名 '"

使用以下代码:templateclassnode{[...]};classb_graph{friendistream&operator>>(istream&in,b_graph&ingraph);friendostream&operatorvertices;//Thisline我得到:error:type/valuemismatchatargument1intemplateparameterlistfor‘templateclassstd::vector’error:expectedatype,got'node'error:templateargument2isinvalid在指示的行

c++ - CMake: "make depend"的用途是什么?

cmake生成的目标之一是depend:ThefollowingaresomeofthevalidtargetsforthisMakefile:...all(thedefaultifnotargetisprovided)...clean...depend...edit_cache...rebuild_cache执行“makedepend”会有什么影响? 最佳答案 这构建了Makefile的某些目标的依赖关系规则。参见http://en.wikipedia.org/wiki/Makedepend

c++ - 为什么 boost::call_traits<T>::param_type 是枚举类型的引用?

基本的C++03枚举类型只是一个具有奇特名称的整数值,因此我希望按值传递它....出于这个原因,我还期望boost::call_traits::param_type与T=SomeEnum确定最有效的传球方式T是按值(value)。从boost文档中查看CallTraits:Definesatypethatrepresentsthe"best"waytopassaparameteroftypeTtoafunction.当我使用boost::call_traits::param_type时与T=SomeEnum它确定SomeEnum应该通过引用传递。我也期待C++11classenums也

c++ - 文章 Generic<Programming> Typed Buffers 在 C++ 11 中是否完全过时?

我正在阅读GenericTypedBuffers,一篇来自AndreiAlexandrescu的相当古老的文章。我想知道它是否仍然有意义。在他的文章中,Alexandrescu指出了当性能至关重要时std::vector的一些问题:分配vector时不必要的数据初始化,我认为可以使用std::vector::reserve解决使用C++11和移动语义解决的昂贵移动操作大多数编译器不会通过使用std::memcpy和std为char等类型优化std::vector::memmove。现在对于主流编译器来说这是不正确的(据我所见)。指数级增长。您无法通过简单的方法调用来缩小std::vec

c++ - 未找到 difference_type

当我尝试使用std::distance时使用gcc4.7下的自定义迭代器,它提示找不到difference_type.遗憾的是,我不知道为什么会失败。#includeclassnit{public:typedefintdifference_type;};intmain(){constnittest1;std::distance(test1,test1);return0;}给出错误:/usr/include/c++/4.7/bits/stl_iterator_base_funcs.h:114:5:error:notypenamed‘difference_type’in‘structstd

dependency walker工具简介及使用

dependencywalker工具简介使用简介官方概述:DependencyWalkerisafreeutilitythatscansany32-bitor64-bitWindowsmodule(exe,dll,ocx,sys,etc.)andbuildsahierarchicaltreediagramofalldependentmodules.Foreachmodulefound,itlistsallthefunctionsthatareexportedbythatmodule,andwhichofthosefunctionsareactuallybeingcalledbyothermod