草庐IT

pybind11

全部标签

C++11 : Is it possible to give fixed-template-parameted template to varidic-template-template-parameter?

(是的,由于我糟糕的英语,标题很奇怪;我希望有人能改进它。)接听thisquestion,我发现这段代码有效:templateclassA{};templateclassU>classB{};intmain(){Bit_works;}..虽然templateclass和templateclass不相等。我试图弄清楚为什么这是可能的,并观察了N3337standard的[temp.param],但我找不到任何东西。怎么可能? 最佳答案 是的,这是可能的。C++1114.3.3/3特别允许,并提供了一个例子。3Atemplate-arg

c++11 可变参数模板和 std::endl

我尝试使用C++11可变参数模板做记录器,但它不适用于std::endl,因为std::endl是模板函数,编译器不知道std::endl的特化选择。有什么办法可以强制始终选择std::endl>?如果可能的话,我想直接使用std::endl。编辑:看起来目前在C++11中是不可能的,最好的方法是使用#define或者vsoftco回答了什么。#include#includeclassLogger{public:templatevoidlog(Tval);templatevoidlog(Tval,Args...args);};//explicitspecializationnotwor

c++ - 单元测试 C++11 闭包

对C++闭包进行单元测试有什么优先级吗?我编写的函数通常从在它们的使用点附近定义的闭包开始,然后(可能)稍后发展为完整的函数。这对于保持界面整洁非常好,并且可以更轻松地以线性方式阅读代码,但它会破坏编写单元测试。是否有任何技巧或C++单元测试框架可以处理一些小函数来计算一些在我的main()中定义为闭包的几何图形? 最佳答案 我认为您应该测试函数,而不是lambda函数。如果一个函数包含lambda函数,那么它们就是实现细节。如果您通过将lambda函数创建为变量来重用它们,那么这些函数很容易作为函数进行单元测试。例如。autola

c++ - X11/Xlib : Create "GlassPane"-Window

我尝试使用C++和X11创建一个完全透明的窗口。它不应消耗任何事件,而只是将它们转发到下面的窗口。某种以Java-Windows闻名的GlassPane,但它是全屏的。然后我想在这个窗口上画画。X11是否有可能做到这一点?我的第一次尝试是忽略所有事件,只需使用XGetImage()从根窗口复制图像...但首先,这非常慢,因为窗口需要填满屏幕。不幸的是,XShmGetImage不是这里的一个选项。当然,这个窗口不需要任何装饰,但这不是什么大问题。仅使用X11/Xlib如何做到这一点?如果不可能,我还需要什么?感谢任何帮助!PS:Xinerama和Compiz都已激活,如果这带来问题,我可

c++ - std::bind 有多少个参数(VC 11 只支持 4 个)

我正在玩VisualStudio11的开发者预览版。我偶然发现的缺点之一是std::bind仅支持4个函数参数。我在C++11标准文件中找不到任何相关内容。是否定义了参数的最小数量,或者所有的实现都取决于? 最佳答案 在VC11中,您可以通过设置_VARIADIC_MAX来增加可变参数模板仿真方案使用的最大参数数量。默认为5。看这里:http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspxIfyouneedmorearguments(e.g.youhadcodec

C++11 constexpr 字符串实现

有没有办法让字符串在编译时和运行时都能工作?据我所知,要将一个类构造为constexpr,它需要有一个平凡的析构函数。然而,当我们处理字符串时,这被证明是困难的。如果字符串不是constexpr,则需要释放内存。然而,如果它是constexpr,那么它是静态分配的,不应被删除,因此允许一个微不足道的析构函数。但是,不可能说“嘿,编译器!如果我是constexpr,你不需要破坏我!”或者是?它会像下面这样:classstring{private:char*str;public:templateconstexprstring(constchar(&s)[l]):str(&(s[0])){}

c++ - 使用 C++11 在 Cygwin 上使用 Clang

我在Cygwin上安装了Clang并尝试编译这段代码:#includeintmain(){std::cout如果我执行clang++file.cpp,效果很好。如果我执行clang++file.cpp-std=c++11,它将不起作用。我从这样的标准header中得到错误:Infileincludedfromfile.cpp:1:Infileincludedfrom/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/iostream:39:Infileincludedfrom/usr/lib/gcc/i686-pc-cygwin/4.5.3/in

c++ - ‘operator=’ 的模糊重载与 c++11 std::move and copy and swap idiom

我收到以下错误:[matt~]g++-std=c++11main.cpp-DCOPY_AND_SWAP&&./a.outmain.cpp:Infunction‘intmain(int,constchar*const*)’:main.cpp:101:24:error:ambiguousoverloadfor‘operator=’in‘move=std::move((*©))’main.cpp:101:24:note:candidatesare:main.cpp:39:7:note:Test&Test::operator=(Test)main.cpp:52:7:note:Test&

c++ - C++11标准有没有全新的序列化和反射库?

最近,boost序列化对C++11标准库中的内容进行改进并非不可能。同时,我的项目需要序列化和反射库。我四处寻找,没有找到任何东西。因此我想知道是否有现成的(嗯......它必须是全新的才能与C++11兼容,而不是老化的MFC)或关于制作我自己的任何基本、实用和明确的指导.据我所知,基本原理是使用STANDARD中的那些助手来推断类型,已经在没有std命名空间的boost序列化中被采用。这对您来说可能就像从鸡蛋中挑出鹅卵石一样微不足道,但我就是无法让自己对boost感到满意。 最佳答案 要真正回答这个问题,尽管有点晚了:现在有cer

c++ - c++11 模式下奇怪的 g++ 预处理器行为

我遇到的问题是,当g++在c++11模式下运行时,一些处理器宏没有正确展开。这让我在使用Qt编译程序时遇到麻烦。$g++--versiong++(GCC)4.7.2Copyright(C)2012FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNOwarranty;notevenforMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.以下片段暴露了问题:$catfoo.cpp//#include#defineQTOSTRI