support bazel complie this project and format code.

This commit is contained in:
zhangxing
2023-03-30 00:15:11 +08:00
committed by light-city
parent 1f86192576
commit 3c8a3f259b
641 changed files with 10349 additions and 9523 deletions

View File

@@ -0,0 +1,37 @@
//
// Created by light on 20-1-6.
//
#include <iostream>
#include "structData.h"
template<typename T, typename=std::string>
struct hasSerialize : std::false_type {
};
template<typename T>
struct hasSerialize<T, decltype(std::declval<T>().serialize())> : std::true_type {
};
template<class T>
std::string serialize(const T &obj) {
// 不加constexpr 报错error: no member named 'serialize' in 'A'.
if constexpr (hasSerialize<T>::value) // c++17特性
return obj.serialize();
else
return to_string(obj);
}
int main() {
A a;
B b;
C c;
// The following lines work like a charm!
std::cout << serialize(a) << std::endl;
std::cout << serialize(b) << std::endl;
std::cout << serialize(c) << std::endl;
}