使用模板标签的决定

Decisions using Template Tags

本文关键字:决定 标签      更新时间:2023-10-16

我有一个模板类,需要根据命令行参数实例化。

一定有比我能想到的更好的办法:

if (optionA == 1){
    if (optionB == 2){
        myclass <Option1, Option2, Option3> object;
    }
}
else if (optionA == 2){
 // a whole big if-else ladder
}

这甚至不允许我在if语句的作用域之外使用我的模板对象!顺便说一下,所有的选项都是标签

您的挑战是希望编译时决策(选项类型选择)基于运行时数据(args)。我可以想象一个宏/模板解决方案,生成一个"解析树",将选项代码映射到标签。但是这将导致生成模板类型的组合爆炸,从而减慢编译速度(可能还有运行时)。另一种方法是对每个选项使用工厂方法,将选项对象传递给myclass构造函数。没有纯编译时生成那么高效,但我没有看到其他选择。