CppTemplateTutorial icon indicating copy to clipboard operation
CppTemplateTutorial copied to clipboard

模板参数可为浮点类型

Open Haceau-Zoac opened this issue 4 years ago • 2 comments

#include <iostream>

template <float a>
float qwq()
{
	return a;
}

template <double foo>
double awa()
{
	return foo;
}

int main(int argc, char* argv[])
{
	std::cout << qwq<3.14F>() << '\n'
		<< awa<6.28>() << '\n';
	
	return 0;
}

以上代码编译通过。 IDE:Microsoft Visual Studio Community 2019 16.9.0 Preview 2.0 编译器:msvc(启用 预览 - 最新 C++ 工作草案中的功能 (/std:c++latest)

Haceau-Zoac avatar Jan 11 '21 10:01 Haceau-Zoac

值得注意的是,允许模板参数是浮点类型和有条件的字面类型,是 C++20 的 feature 。但在作者写的时候这个 feature 可能还没有确定下来,故没有提及,而且可能也不适合在一开始就提及。

另外,建议先确定这个 feature 是否以及在哪个版本钦定的,而不建议通过部分编译器的行为来验证。而且正如在 名称查找 那一节所提及的,MSVC 的行为可能与标准有所不同,更不建议作为验证 feature 的方式。

RedFog avatar Jan 11 '21 10:01 RedFog

值得注意的是,允许模板参数是浮点类型和有条件的字面类型,是 C++20 的 feature 。但在作者写的时候这个 feature 可能还没有确定下来,故没有提及,而且可能也不适合在一开始就提及。

另外,建议先确定这个 feature 是否以及在哪个版本钦定的,而不建议通过部分编译器的行为来验证。而且正如在 名称查找 那一节所提及的,MSVC 的行为可能与标准有所不同,更不建议作为验证 feature 的方式。

额好吧(╯▽╰)

谢谢♪(・ω・)ノ

Haceau-Zoac avatar Jan 11 '21 13:01 Haceau-Zoac