gpt4 book ai didi

c++ - 如何使整数模板参数可作为模板化类成员访问?

转载 作者:行者123 更新时间:2023-11-30 00:56:18 25 4
gpt4 key购买 nike

模板类的一个常见模式是模板参数在类中被类型定义以便于访问:

#include <type_traits>
template<class T> struct Foo{
typedef T type;
};
static_assert(std::is_same<Foo<int>::type,int>::value,"");

如何对非类型模板参数做同样的事情?我只有以下想法,但总得有更优雅的东西吧?

template<int I> struct Bar{
constexpr static int getI(){ return I; }
};
static_assert(Bar<5>::getI()==5,"error");

最佳答案

我可能会使用 enum,但它的实用性似乎对我来说有点受限...

#include <iostream>
using namespace std;

template<int N> struct Foo
{
enum {value_ = N};
};

int main(int argc, char* argv[])
{
Foo<42> foo;

cout << foo.value_;

return 0;
}

编辑以包括这种事情经常在模板元编程中完成。

关于c++ - 如何使整数模板参数可作为模板化类成员访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10567197/

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