缩短C ++模板函数名称

时间:2018-03-13 18:01:35

标签: c++ c++11

我知道,为了缩短课程名称,我可以做以下事情:

using Time = std::chrono::time_point<std::chrono::system_clock>;
using Clock = std::chrono::system_clock;

但如何正确减少下一行的长度呢?

/*using Ms = */ std::chrono::duration_cast<std::chrono::milliseconds>

目标代码:

Time start = Clock::now();
// something
Time end = Clock::now();
std::cout << Ms(end - start).count() << std::endl;

4 个答案:

答案 0 :(得分:6)

你有几个选择。您可以使用using declaration

SELECT st.name as student,
       MIN(su.name) as subject1,
       (CASE WHEN MIN(su.name) <> MAX(su.name) THEN MAX(su.name) END) as subject2
FROM student st JOIN
     student_subjects ss
     ON ss.student = st._id JOIN
     subject AS su
     ON ss.subject = su._id
GROUP BY st._id, st.name;

或者,您可以编写自己的函数:

void foo() {
    // These can be scoped to the function so they don't bleed into your API
    using std::chrono::duration_cast;
    using std::chrono::milliseconds;

    Time start = Clock::now();
    // something
    Time end = Clock::now();
    std::cout << duration_cast<milliseconds>(end - start).count() << std::endl;
}

答案 1 :(得分:3)

从c ++ 17开始,默认情况下lambdas是constexpr,这使得它们成为模板函数的优秀别名而没有所有令人不快的模板语法:

<img src="{{produs.Imagini}}" (click)="openProdus(produs.Poziție)" />

答案 2 :(得分:2)

你所称的缩短类名实际上是类型别名。 Type aliases用于类型。 | _id | name | | --- | --------- | | 1 | Student 1 | | 2 | Student 2 | | 3 | Student 3 | | ... | ... | 不是一种类型。这是一个功能。你不能为函数创建别名。

答案 3 :(得分:1)

预处理器可供您利用,如果您愿意,您可以使用宏。

#define TIME std::chrono::time_point<std::chrono::system_clock>
#define CLOCK std::chrono::system_clock;
#define TIME_AS_MS std::chrono::duration_cast<std::chrono::milliseconds>