通过封装命名模板参数

时间:2016-12-15 10:27:28

标签: c++ templates

我一直想知道C ++中是否有任何针对命名模板参数的解决方案。对于普通调用,有“命名参数成语”,“Boost ::参数库”以及其他几种解决方法(例如这些these),但当One有10个参数模板时 - 最好的并且似乎是唯一的选项是std::tuple

在一些Javascript指南中,我看到了封装技术:一组参数/参数表示为具有默认条目的对象。条目(参数)通过重载(覆盖)来设置。

有用的副作用是字符串文字,浮点值和其他非整数模板参数变得易于以这种方式传递。

例如:

struct DefSets {
  using Type                               = void*;
  static const int N                       = 10;
  constexpr static const double Ratio      = 2.5;
  constexpr static const char* Description = "Default";
};

template<class Settings = DefSets>
class ALotOfParametersClass { /* ... */ };

//----------------------------------------------------

struct MySets : public DefSets {
  constexpr static const char* Description = "Some text";
  constexpr static const double Ratio      = 3.5;
};

int main()
{
  ALotOfParametersClass<MySets> myInstance;
}

这完全适用于C ++,但我从未见过它(甚至提到过)。

问题是:

  • 可能存在哪些隐藏的障碍/缺点?
  • 毕竟这种技术看起来不错吗?

0 个答案:

没有答案