"未找到用户定义的文字运算符"

Fro*_*rud 3 c++

我正在阅读CppCoreGuidelines哲学,并找到了一个我不理解的例子.(https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-philosophy)

代码示例说;

change_speed(double s);   // bad: what does s signify?
// ...
change_speed(2.3);

change_speed(Speed s);    // better: the meaning of s is specified
// ...
change_speed(2.3);        // error: no unit
change_speed(23m / 10s);  // meters per second
Run Code Online (Sandbox Code Playgroud)

我的问题是关于最后一行.我假设指南建议像这样定义速度;

typedef int Speed;
Run Code Online (Sandbox Code Playgroud)

但是在示例的最后一行中,他们使用m和s作为参数的一部分.如果我尝试相同,我只会收到一条错误,说"未找到用户定义的文字运算符".

这应该怎么样?

Mar*_*ica 7

我的问题是关于最后一行.我假设指南建议像这样定义速度;

typedef int Speed;
Run Code Online (Sandbox Code Playgroud)

不.他们期待的是:

class Speed {
    double value;
public:
    ....
}

class Distance {
     double value;
public:
     ...
};

class Time {
     double value;
public:
     ....
};

Speed operator /(Distance d, Time t);
Run Code Online (Sandbox Code Playgroud)

和一对用户定义的距离和时间的文字运算符

Distance operator "" _m(double);

Time operator "" _s(double);
Run Code Online (Sandbox Code Playgroud)

但是这个例子中有一个错误.它应该是:

change_speed(23_m / 10_s);  // meters per second
Run Code Online (Sandbox Code Playgroud)