草庐IT

enable-stdio-inheritance

全部标签

c++ - 是否可以使用 std::enable_if 来选择成员模板特化?

给定一个类声明classA{templateTfoo();};我想专攻A::foo对于int的各种类型(T,...)和类型类(POD,非POD).不幸的是,我似乎无法使用std::enable_if对于后者。以下不编译:templateintA::foo();//OKtemplatetypenamestd::enable_if::value,T>::typefoo();//typenamestd::enable_if::value,T>::typefoo();//问题可能是由于std::enable_ifstuff是函数签名的一部分,我没有在A中声明任何这样的成员.那么如何根据类型特征

c++ - 如果 vector 是特定长度,则使用 C++11 std::enable_if 启用成员函数

我正在编写一个简单的vector类,我希望有一些成员函数只能在特定长度的vector中使用(例如3元素vector的叉积)。我偶然发现了std::enable_if,看起来它可以做我想做的事,但我似乎无法让它正常工作。#include#includetemplateclassVector{private:Tdata[L];public:Vector(void){for(unsignedinti=0;i::type,L>cross(constVector&vec2)const{Vectorresult;result(0)=(*this)(1)*vec2(2)-(*this)(2)*vec

c++ - 避免模​​拟 std::fstream 类的 "inheritance by dominance"警告

我正在使用googlemock在我的单元测试中模拟一个std::fstream对象,像这样:TEST_F(SomeTest,SomethingIsDoneCorrectly){classMockFstream:publicstd::fstream{};MockFstreamlMockFstream;//Expectationsandassertionshere}当我编译时,我收到以下警告:Warning1warningC4250:'SomeTest_SomethingIsDoneCorrectly_Test::TestBody::MockFstream':inherits'std::b

c++ - 'typename Enable = void' 是什么意思?

我发现typenameEnable=void定义在ProtoBuf中,templatestructRefTypeTraits;但是,我找不到Enable用于此headerfile,这让我很困惑。typenameEnable=void在模板中是什么意思? 最佳答案 是允许SFINAE具有模板特化,例如:templatestructRefTypeTraits::value>>{//...specializationforTwhichrespectscondition};从C++20开始,我们可以特化concepts以避免这个需要额外的模

c++ - --enable-auto-import 警告的目的

我正在尝试编译以下程序:#includeintmain(){std::cout当我编译它时,我得到这个消息:C:\programs>g++test.cppInfo:resolvingstd::coutbylinkingto__imp___ZSt4cout(auto-import)c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe:warning:auto-importinghasbeenactivatedwithout--enable-auto-importspecifiedonthecommandl

c++ - 如何 "inherit"来自 STL 类的迭代器?

我正在尝试使用我编写的一些算法创建一个名为tableaux的对象类,它们本质上是无符号整数vector的vector(它们类似于矩阵,只是行的长度可以不同)。主要问题是我想从vector类继承这些对象的迭代器,但我不知道如何做。我看了几个相关的问题和答案,我很容易继承std::vector>公开的,但共识是,由于STL容器没有虚拟析构函数或其他原因,这是不好的。所以我决定尝试通过组合来“继承”。这是我要实现的目标的一个最小示例:#include#includeclasstableau{private:std::vector>rep;public:usingstd::vector>::i

c++ - 为什么 Visual Studio 不允许我在 enable_if 中使用模板化的 constexpr 函数?

所以我将其归结为最小的、完整的、可验证的示例,而且VisualStudio2015似乎不允许我使用模板化的constexpr在enable_if中运行.例如:templateconstexprboolcondition(){returnsizeof(T)>1;}给我错误:errorC2995:enable_if::typetest(void):functiontemplatehasalreadybeendefined当我尝试在替换中使用它时,失败不是这样的错误编译:templateenable_if_t()>test(){coutenable_if_t()>test(){cout这在g

c++ - 在 std::enable_if 中使用 sizeof...

下面的代码无法编译,我就是想不通为什么。templatetypenamestd::enable_if0>::typefunc(){//nop}产生的错误信息是:error:expectedunqualified-idbeforenumericconstanttypenamestd::enable_if0u>::typefunc(){^ 最佳答案 您需要括号才能让编译器正确解析它:templatetypenamestd::enable_if0)>::typefunc(){^^//nop}

c++ 将 vector<Inherited*> 转换为 vector<abstract*>

classInterface{};classFoo:publicInterface{};classBar{public:vectorgetStuff();private:vectorstuff;};如何实现getStuff()函数? 最佳答案 vectorresult(stuff.begin(),stuff.end());returnresult; 关于c++将vector转换为vector,我们在StackOverflow上找到一个类似的问题: https:

c++ - 扩展公共(public)基础 : Diamond inheritance vs. QObject

我想我在这里遇到了一种菱形继承(钻石问题)问题。Qt提供了几个旋转框,用于整数值、double值以及日期/时间。它们都派生自QAbstractSpinBox:#includeclassQSpinBox:publicQAbstractSpinBox{};#includeclassQDoubleSpinBox:publicQAbstractSpinBox{};现在我想添加一些所有旋转框通用的功能,在这个具体示例中,一个按钮将旋转框恢复到其最小值(因此是specialValueText)。所以我也派生自QAbstractSpinBox并想出了这样的东西:classAbstractRevert