我厌倦了写作std::shared_ptr<MyClass>,std::make_shared<MyClass>在考虑了这个之后,我想找到一个更短的语法.
对于我的短期科学项目,我经常只需要非常快速地生成代码并且更喜欢严格的语法 - 只是不要评论它;)
所以我虽然这个:
#define PTR(X) std::shared_ptr<X>
#define NEW(X) std::make_shared<X>
PTR(MyClass) p = NEW(MyClass)(args)
Run Code Online (Sandbox Code Playgroud)
或者关于这个:
template<typename T> using ptr = std::shared_ptr<T>;
template<typename T, typename... Args>
ptr<T> make(Args... args) {
return std::make_shared<T>(args...);
}
ptr<MyClass> p = make<MyClass>(args);
Run Code Online (Sandbox Code Playgroud)
您认为这些方法的优点/缺点是什么?有更优雅的方式吗?
using std::make_shared; // at file scope, after all #includes
auto p = make_shared<Bob>(a,b,c);
Run Code Online (Sandbox Code Playgroud)
但我个人喜欢std::.
使用auto很好,因为在同一行上重复两次类型是不必要的噪音.
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |