草庐IT

boost-uuid

全部标签

c++ - Boost MPL 占位符和 Lambda

我目前正在使用boost::mpl对概念样本进行一些证明,但在理解lambda函数如何启用占位符方面遇到了一些困难。我意识到我可以将元函数包装在元函数类中以使高阶函数能够访问嵌套的应用函数,并且已经意识到您可以通过使用mpl::lambda包装允许占位符的元函数来避免这种努力.这实际上是如何工作的?我无法理解lamda和占位符在幕后的实际作用。 最佳答案 参见Boost.MPLmanual:占位符是mpl::arg形式的元函数类.元函数类是包含apply的类元函数。templatestructarg;//forwarddeclara

c++ - "boost::mpl::identity<T>::type"在这里有什么意义?

我正在检查clamp的执行情况在boost中:templateTconst&clamp(Tconst&val,typenameboost::mpl::identity::typeconst&lo,typenameboost::mpl::identity::typeconst&hi,Predp){//assert(!p(hi,lo));//Can'tassertp(lo,hi)b/ctheymightbeequalreturnp(val,lo)?lo:p(hi,val)?hi:val;}如果我查找文档,identity返回模板参数不变。Theidentitymetafunction.Re

c++ - 如何使用 boost::date_time 在本地时间和世界时间之间进行转换?

如何使用current使用boost::date_time在本地时间和UTC时间之间转换(特别是,从本地时间到UTC)系统时区?我知道boost::date_time::local_adjustor,但它需要一个模板参数,它是一个依赖于时区的偏移量。Failingplatform-independentway要做到这一点,我将如何专门在Linux上做到这一点?顺便说一句,在转换过程中如何处理不存在的时间点?例如,如果由于夏令时,一天少了一小时,我尝试从缺少的小时转换一个时间点,那么最终的世界时是多少? 最佳答案 我正在使用以下代码查

c++ - 如何使用 boost::log::BOOST_TRIVIAL_LOG 更改默认格式?

boost::log看起来真的很强大。它为简单的日志记录提供了一个BOOST_LOG_TRIVIAL宏。但是如何更改默认格式?它默认打印时间戳,我不想要它。你有什么主意吗?似乎唯一的方法是重新定义一个新的接收器并将其添加到核心中,然后您可以在后端调用set_format()以防万一。但这不再是“微不足道的”。 最佳答案 Boost.Log有一个默认的sink,只要你不提供自己的sink就可以使用。以下代码片段通过添加新接收器更改控制台日志的格式。#include#includeintmain(){boost::log::add_co

c++ - 如何使用 Boost Filesystem Library v3 确定文件是否包含在路径中?

如何确定文件是否包含在boost文件系统v3的路径中。我看到有一个lesser或greater运算符,但这似乎只是词法上的。我看到的最佳方式如下:取文件和路径的两个绝对路径删除文件的最后一部分并查看它是否等于路径(如果是则包含)有没有更好的方法来做到这一点? 最佳答案 以下函数应确定文件名是否位于给定目录中的某个位置,作为直接子目录还是在某个子目录中。boolpath_contains_file(pathdir,pathfile){//Ifdirendswith"/"andisn'ttherootdirectory,thenthef

c++ - Boost::Bind 和虚函数重载:它们为什么起作用?

我写了一些代码,但害怕它不会工作-所以我写了一个原型(prototype):#include#include#includeclassbase{private:boost::functionaction;protected:virtualvoidonDataBaseReady(inti){std::cout编译和工作。(输出20)。但为什么?我也在VS2010下测试过,想知道它是否可以跨平台工作(比如在GCC下编译)?主要是action=boost::bind(&base::onDataBaseReady,this,_1);吓到我了——我们说&base::...

c++ - 从 lambda 函数构造的 boost::function_output_iterator 不可赋值

考虑以下代码片段:autof=[](intx){std::cout问题是,这样构造的function_output_iterator是不可赋值的,因此不满足Iterator概念,要求类型为CopyAssignable.这不是错误,因为boostFunctionOutputIteratordocumentation清楚says:UnaryFunctionmustbeAssignableandCopyConstructible.lambdafunction的While赋值运算符被删除:ClosureType&operator=(constClosureType&)=delete;所以这个行

c++ - BOOST 程序_选项 : parsing multiple argument list

我想传递具有正值或负值的多个参数。可以解析吗?目前我有以下初始化:vectorIDlist;namespacepo=boost::program_options;po::options_descriptioncommands("Allowedoptions");commands.add_options()("IDlist",po::value>(&IDlist)->multitoken(),"WhichIDstotrace:ex.--IDlist=01200-2")("help","printhelp");我想调用:./test_ids.x--IDlist=01200-2unknown

c++ - 在条件中使用 boost::tribool 时是编译器错误还是我的错误?

代码如下:(ColiruCode)#include#include#include#includestructB{boost::triboolboo;voidbug(){booltmp=indeterminate(boo);std::cout输出是tmp=falseBUG,wrongcallbash:line7:14410Aborted(coredumped)./a.out我不明白为什么要在这里调用should_not_be_called。测试的编译器是gcc4.9和clang3.6。更新:我阅读了答案并将带有“if”的行更改为if(tmp&&(false==(boo=should_n

c++ - std::move 在 boost 库中的对应物

我正在尝试在我的代码中使用std::move,但我使用的编译器(g++4.4)不支持它。boost::move可以完全替代std::move吗?谢谢。 最佳答案 std::move(和boost::move当启用c++0x支持时)只是来自T&的转换至T&&.它实际上并没有移动任何东西。这意味着指针的具体类型T&&必须得到编译器的支持。GCC从4.3版本开始支持右值引用,所以boost版本应该没问题。但是,有没有理由不能使用std::move来自#include?http://en.cppreference.com/w/cpp/uti