gpt4 book ai didi

c++ - `using` 用户定义文字运算符的声明

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:51 26 4
gpt4 key购买 nike

是否可以为文字运算符operator "" 声明using

例如,

#include <chrono>

namespace MyNamespace
{
constexpr std::chrono::hours operator "" _hr(unsigned long long n){
return std::chrono::hours{n};
}

// ... other stuff in the namespace ...
}

using MyNamespace::operator""; // DOES NOT COMPILE!

int main()
{
auto foo = 37_hr;
}

我的解决方法是将这些运算符放在它们自己的嵌套命名空间中,称为 literals,这允许 using namespace MyNamespace::literals;,但这似乎有些不雅,而且我不明白为什么 using 指令不能像用于命名空间中的任何其他函数或类型一样用于 operator 函数。

最佳答案

using MyNamespace::operator""_hr;
// ^^^

DEMO

语法引用:

using-declaration:
using typename (opt) nested-name-specifier unqualified-id ;
using :: unqualified-id ;

unqualified-id:
identifier
operator-function-id
conversion-function-id
literal-operator-id
~ class-name
~ decltype-specifier
template-id

literal-operator-id:
operator string-literal identifier
operator user-defined-string-literal

关于c++ - `using` 用户定义文字运算符的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32319308/

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