如何将值与模板进行比较并在C 中提升
How to compare values with templates and boost in C++?
本文关键字:比较 更新时间:2023-10-16
我创建了一个模板函数,其中每个类型都可以在其中。现在,此功能始终必须起作用。如果T型是INT,则int始终来自功能。如果有一个字符串,则出现一个字符串。
现在,我刚刚查看了Boost文档。boost表示我必须使用boost_auto_test_case_template。
假设我有以下情况:
BOOST_AUTO_TEST_SUITE (MyTestSuite)
typedef boost :: mpl :: list <int, long, short, double, float, std :: string> TestTypes;
BOOST_AUTO_TEST_CASE_TEMPLATE (MyTestCase, T, TestTypes)
{
// These three values will be separated by ',' and can be accessed seprately thanks to their individual getters.
std :: string input = "5,6,7";
Myclass <T> myClass (input);
BOOST_TEST (myClass.getFirst() == 5);
BOOST_TEST (myClass.getSecond() == 6);
BOOST_TEST (myClass.getThird() == 7);
}
BOOST_AUTO_TEST_SUITE_END()
您可以看到,我不想检查它是否是我回来的正确类型,但是我回来的值是否与我给出的值相同。因此,如果我给出5次双型,那么我的班级将其变为5.00。我的支票目前没有这样做。如何确保我要检查的数字始终与我提供的类型相同?听起来可能有点困难,但是如果您想要更多信息,我将编辑此消息。
,假设这有效。然后,我想将该类型的最小值和最大值用作输入。我怎么做?如何获得t的最小值和最大值?
您可以使用 decltype
,而stl特征:
BOOST_CHECK(std::is_same<T, decltype(myClass.getFirst())>::value);
然后,我想将该类型的最小值和最大值作为输入。我该怎么做?
使用std :: numeric_limits
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- std::设置自定义比较器
- 布尔比较运算符是如何在C++中工作的
- C++将目录中的所有文件与::filesystem进行比较
- shell排序中的交换和比较
- 如何在C++中比较两个char数组
- catch框架有没有办法比较流或文件
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 智能指针作为无序映射键,并通过引用进行比较
- 比较if语句中的数组值和int值
- 对于循环变体比较
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 比较两个大小不等的映射c++