当前位置:  开发笔记 > 编程语言 > 正文

如何将constexpr作为模板参数传递?

如何解决《如何将constexpr作为模板参数传递?》经验,为你挑选了1个好方法。

我有一个模板化的类MyClass,我想为各种参数运行它,以便测量一些值.我知道编译之前的确切参数因此我认为必须有一种方法来实现目标.

我的代码到目前为止:

template 
class MyClass { /*...*/ };


constexpr int PARAMS[] = {1,2,3 /*, ...*/};
for (constexpr auto& t: PARAMS) {
    MyClass myClass;
    // ... do sth
}

但是编译器(gcc v4.9.2,C++ 11)不接受这一点.我也试过使用const而不是constexpr哪个也不行.

有可能是这样的吗?我真的根本不想使用宏.



1> Piotr Skotni..:
#include 
#include 

constexpr int PARAMS[] = { 1, 2, 3, /*...*/ };

template 
void bar()
{
    MyClass myClass;
    // do sth
}

template 
void foo(std::index_sequence)
{
    using dummy = int[];    
    static_cast(dummy{ 0, (bar(), 0)... });

    // (bar(), ...); since C++1z
}

int main()
{
    foo(std::make_index_sequence{});
    //                           since C++1z
    //                           for std::array PARAMS{};
}

DEMO

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有