小编AKL*_*AKL的帖子

指针的大小和体系结构

通过在普通台式PC上运行简单的C ++程序进行基本测试,似乎可以假设任何类型的指针(包括函数指针)的大小等于目标体系结构位的大小。

例如:在32位体系结构中-> 4个字节,在64位体系结构中-> 8个字节。

但是我记得读过的话,它不是一般的那样!

所以我想知道这种情况会怎样?

  • 为了使指向数据类型的指针的大小与指向其他数据类型的指针的大小相等
  • 为了使指向数据类型的指针的大小与指向函数的指针的大小相等
  • 为了使指向目标体系结构的指针大小相等

c c++ assembly portability

17
推荐指数
6
解决办法
2140
查看次数

概念可以用来限制值和类型吗?

概念可用于将类型限制为模板参数,如下例所示:

template<typename t, int v>
concept the_concept1 = sizeof(t) > v;

template<int v, the_concept1<v> t>
struct some_struct1{};
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用类似的方法,其值如下例所示:

template<int v1, int v2>
concept the_concept2 = v1 > v2;

template<int v1, the_concept2<v1> v2>
struct some_struct2{};
Run Code Online (Sandbox Code Playgroud)

但是使用 G++ 10 我收到以下错误消息:

error: ‘the_concept2’ does not constrain a type
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否可以使用概念来限制价值观?如果是这样,那么我该怎么做?

编辑:我的最终目标是在具有可变参数模板参数的模板结构声明中使用该概念,例如:

template<typename t, std::size_t ... v>
struct the_struct;
Run Code Online (Sandbox Code Playgroud)

我需要一个概念来检查each v是否小于sizeof(t).

c++ templates concept c++20

6
推荐指数
1
解决办法
268
查看次数

禁止模板虚函数是否是一种不必要的谨慎?

在阅读了许多类似主题的帖子并思考了一段时间后,我仍然不明白为什么禁止实现模板虚函数。在我看来,这种情况与混合静态多态性与动态多态性无关,而是在编译时使用函数的模板区分,然后在运行时对每个单独创建的函数使用动态多态性。时间。

考虑这段代码:

class parrent{
public:
    virtual float function(float value)const{
        return value;
    }
    virtual double function(double value)const{
        return value;
    }
    virtual long double function(long double value)const{
        return value;
    }
    virtual ~parrent() = default;
};
class a_child:public parrent{
public:
    float function(float value)const override{
        return value + 1.5;
    }
    double function(double value)const override{
        return value + 1.5;
    }
    long double function(long double value)const override{
        return value + 1.5;
    }
};
Run Code Online (Sandbox Code Playgroud)

显然这段代码是没问题的,能够达到预期的效果。但使用模板重写类似的代码:

class parrent{
public:
    template<typename t__>
    virtual t__ function(t__ value)const{
        return value;
    } …
Run Code Online (Sandbox Code Playgroud)

c++ virtual templates function

2
推荐指数
1
解决办法
111
查看次数

标签 统计

c++ ×3

templates ×2

assembly ×1

c ×1

c++20 ×1

concept ×1

function ×1

portability ×1

virtual ×1