草庐IT

jukebox_mode_enabled

全部标签

C++ SFINAE enable_if_t 在成员函数中,如何消除歧义?

假设我们有一些SFINAE成员函数:classfoo{template::value,S>voidbar(S&&s);template::value,S>voidbar(S&&s);}如果我们像上面那样声明,那么我们如何定义它们呢?他们的两个函数签名看起来像:templateinlinevoidfoo::bar(S&&s){...dosomething...}我见过返回std::enable_if_t的示例喜欢:templateautobar(S&&s)->std::enable_if_t::value,S>(...){...dosomething...}根据返回类型消除歧义。但我不想

c++ - 错误 : Range-based 'for' loops are not allowed in C++98 mode

所以我正在关注此页面上的教程:http://www.cplusplus.com/doc/tutorial/control/但是我在做范围/基于for循环时遇到了麻烦。我找到了这个页面:GNUGCCcompilerupdating那里的答案说我应该打开“项目”和“属性”。但是当我尝试这样做时,“属性”选项变灰了,没有任何解释:http://imageshack.com/a/img571/4371/xd1x.png那么..我怎样才能激活范围/基于for循环? 最佳答案 将-std=c++11标志传递给编译器。当然,GCC应该足够新(>=

c++ - Qt 拖放 : cannot move when copy is enabled (Ubuntu Gnome)

我正在实现一个View和一个模型,我希望在其中支持内部移动项目(通过拖动)和复制项目(通过在拖动时按Ctrl)。我已经按照说明完成了我需要做的一切。我已经设置了mime函数,我已经实现了removeRows()和flags()。问题是当我拖动时,它默认为复制操作(我得到带有加号的箭头光标,它确实通过在模型中创建一个新项目来复制项目)。我能看到的唯一区别是:如果我在supportedDropActions()中只返回Qt::MoveAction,它只会移动。如果我返回(Qt::CopyAction|Qt::MoveAction),它只会复制。有什么想法吗?我希望它像Nautilus(Gn

c++ - 如何 'web enable' 遗留 C++ 应用程序

我正在开发一个按组织划分用户的系统。每个用户都属于一个组织。每个组织都将其数据存储在自己的数据库中,该数据库位于数据库服务器计算机上。一个数据库服务器可以管理一个或多个组织的数据库。现有(遗留)系统假定只有一个组织,但是我想通过运行它的“实例”(绑定(bind)到一个组织)来“扩展”应用程序,并在服务器计算机上运行多个实例(即运行“单一组织”应用程序的多个实例-每个组织一个实例)。我将为在服务器上运行的每个实例提供一个RESTfulAPI,以便可以使用瘦客户端访问在服务器机器上运行的实例提供的服务。这是一个演示关系的简单示意图:Server1->Ndatabase(eachorgani

c++ - 如何在本身取决于另一个条件的条件下使用 std::enable_if?

我有一种情况需要使用std::enable_if来区分两个重载,比如foo。赋予std::enable_if的条件本身取决于foo的模板参数的依赖类型。使用std::enable_if表达这一点的最佳方式是什么?以下测试代码是我目前所拥有的。我意识到除了std::enable_if之外可能还有更好的方法来实现我在测试代码中想要的行为。但是,以下是我的用例的简化版本,它本身需要std::enable_if。#include#includestructbar{usingbaz=int;};templatestructis_bar:std::false_type{};templatestru

C++ ifstream,ofstream : What's the difference between raw read()/write() calls and opening file in binary mode?

这个问题涉及ifstream和ofstream在读取和写入数据到文件时的行为。通过阅读stackoverflow.com,我设法发现operator(流插入运算符)在输出之前将double等对象转换为文本表示,并调用read()和write()分别读取和写入存储在内存(二进制格式)中的原始数据。编辑:这很明显,这里没有什么意外。我还发现以二进​​制模式打开文件会阻止根据不同操作系统的要求自动转换换行符。所以我的问题是:这个自动翻译,例如;来自\n至\r\n调用函数时发生read()和write()?或者此行为仅特定于operator.(还有operator>>。)请注意,这里有一个类似

c++ - 使用 std::enable_if 的正确方法

这些类之间有什么区别?正是这些带有enable_if的方法。///Aliasofstd::enable_if...templateusingEnable_if=typenamestd::enable_if::type;TemplateclassA{...template>Some_Return_Typemethod(param1,param2){}template>Some_Return_Typemethod(param1){}};TemplateclassB{...Enable_ifmethod(param1,param2){}Enable_ifmethod(param1){}};在

c++ - 为什么 boost::enable_if 不会导致重复重载方法编译错误

我已经获得了enable_if的代码,它允许我做一些很棒的事情,但我认为它会导致错误,因为我下面显示的两个方法具有相同的方法签名。有人知道为什么允许这样做吗?#include#includetemplatestructenable_if{typedefRtype;};templatestructenable_if{};templatetypenameenable_if::value>::typeprint(constT&item){std::couttypenameenable_if::value)>::typeprint(constT&item){std::cout

c++ - Barton-Nackman 与 std::enable_if

什么是更可取的(如果有的话)?变体A(Barton-Nackman):templatestructequal_comparable{friendbooloperator==(constT&t1,constT&t2){returnt1.equalTo(t2);}};classMyClass:privateequal_comparable{boolequalTo(constMyClass&other)//...};变体B(std::enable_if):structMyClass{staticconstbooluse_my_equal=true;boolequalTo(constMyCla

c++ - enable_if 不能用于禁用此声明

我显然没有足够的SFINAE经验来处理这个问题。实际上,我的印象是它一直有效到现在,并且在我的代码中到处都出现了这种问题,就像最近半个小时一样。#includeusingnamespacestd;template=100>::type>structmore_than_99{};intmain(){more_than_99c;}它说Notypenamed'type'in'std::__1::enable_if';'enable_if'cannotbeusedtodisablethisdeclaration在与模板声明对应的行上。到底是怎么回事?我一直使用这种语法来启用和禁用我的模板类,它