如何将值与模板进行比较并在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