gpt4 book ai didi

c++ - 编写一个只接受编译时常量参数的函数?

转载 作者:太空宇宙 更新时间:2023-11-04 13:44:45 24 4
gpt4 key购买 nike

在 C++ 中有没有一种方法可以编写一个函数,该函数可以将编译时常量作为参数,但如果传递一个依赖于运行时的值,则会出现编译错误?具体来说,我有一个构造函数,其中使用空指针进行初始化将具有可接受的行为,但是使用非空指针进行初始化意味着发生了一些奇怪的事情。

细节,如果它们很重要:类可以用智能指针构造,但不应该用(非空)原始指针构造。为简洁起见,我希望能够直接从空指针文字进行初始化,但智能指针不允许从原始指针进行隐式转换。这意味着在每个使用点都需要额外的措辞来明确地将空指针包装在智能指针中。通过将包装移动到构造函数中来删除重复代码会很好。

我知道执行此操作的一种方法是使用运行时检查传递的参数是否为非空,但我更愿意在编译时捕获一般的原始指针转换,如果可能的话,并且仅在原始指针绝对为空时才允许编译。

(请务必说明您的技术是否依赖于 C++11 或 C++14 功能。)

最佳答案

自 C++11 起,您可以根据需要使用 std::nullptr_t

Demo .

关于c++ - 编写一个只接受编译时常量参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com