gpt4 book ai didi

c++ - 如何提取模板参数中传递的类型?

转载 作者:行者123 更新时间:2023-11-30 01:33:20 24 4
gpt4 key购买 nike

在下面的代码中,我想将“某物”替换为允许我将“f”的类型声明为 C 中传递的第二个参数(同时将 C 传递给 M 的模板)的东西,即在此处 float 。

#include<iostream>
using namespace std;
template<class A, class B>
class C{
public :
A a;
B b;
};
template<class D>
class M{
public :
decltype(D::<something>) f; //!!!!!!!!!!!!!!!!
void show(){cout<<f;}
};
int main(){
M<C<int,float>> m;
m.show();
}

最佳答案

你可以通过一些技巧来做到这一点。

template<typename> class M; // leave undefined
template<template<typename, typename> D,
typename One,
typename Two>
class M<D<One, Two>> { // a specialisation
Two f;
};

现在您可以传递给 M一个恰好有两个模板参数的类(例如 C<int, float> )。如果您传递其他内容(例如 int),将会出现错误。

关于c++ - 如何提取模板参数中传递的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58698002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com