相关疑难解决方法(0)

如何在C++中推导出函数参数类型?

有功能定义:

void f(int) { }
Run Code Online (Sandbox Code Playgroud)

我想定义:

int a;
Run Code Online (Sandbox Code Playgroud)

但如果函数定义更改为:

void f(double) { }
Run Code Online (Sandbox Code Playgroud)

变量定义必须变为:

double a;
Run Code Online (Sandbox Code Playgroud)

也就是说,"a"的类型必须与"f"函数的第一个参数相同.我需要以下内容:

decltype_of_argument<f, 0> a;
Run Code Online (Sandbox Code Playgroud)

在C++中有可能吗?

c++ types function c++11

12
推荐指数
2
解决办法
3101
查看次数

使用decltype的函数参数类型

注意:此问题中提供的示例不是生产代码,根本没有任何意义.它只是在那里说明我的问题.

我正在测试它的可能性decltype,特别是如果它用于推断函数参数类型,并遇到了一个问题:

假设有两个类结构如下:

struct ClassInt
{
    // Note: no default ctor
    ClassInt(int value)
        :   m_Value(value)
    {}

    int  m_Value;
};

struct ClassDouble
{
    // Note: no default ctor
    ClassDouble(double value)
        :   m_Value(value)
    {}

    double  m_Value;
};
Run Code Online (Sandbox Code Playgroud)

现在,我写了一个函数(以某种方式)通过字符串检索一个type参数的实例(应该是上面的一个),并为其m_Value成员分配一个给定的值:

template< typename Ty >
Ty* get_fake_ptr() { return nullptr; }


// Retrieve pointer to Ty object by name and assign its value member.
// The problem is that we don't actually have an instance of Ty at the point
// …
Run Code Online (Sandbox Code Playgroud)

c++ decltype template-function c++11 c++14

5
推荐指数
1
解决办法
1753
查看次数

标签 统计

c++ ×2

c++11 ×2

c++14 ×1

decltype ×1

function ×1

template-function ×1

types ×1