我一直想知道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 ++,但我从未见过它(甚至提到过)。
问题是: