标签: loki

为什么Loki库没有被更广泛地使用?

洛基库实现了一些使用非常广泛的概念(智能指针,访客,工厂等).经常提到相关的书"现代C++设计",但图书馆本身并没有被广泛使用.这是为什么?

大多数开发人员似乎更喜欢Boost.特别是,为什么人们经常决定使用Boost的智能指针而不是Loki?

c++ boost loki

46
推荐指数
4
解决办法
1万
查看次数

为什么Alexandrescu不能使用std :: uncaught_exception()在ScopeGuard11中实现SCOPE_FAIL?

毫无疑问,很多人都熟悉Alexandrescus ScopeGuard先生模板(现在是Loki的一部分)和新版ScopeGuard11:http://channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2012- 安德烈- Alexandrescu的系统性,错误处理-在-C

来源:https: //gist.github.com/KindDragon/4650442

在他在c ++和2012年以后的演讲中,他提到他无法找到一种方法来正确检测范围是否因异常而退出.因此,当且仅当由于异常而退出作用域时,他才能实现SCOPE_FAIL宏,该宏将执行提供的lambda(通常用于回滚代码).这将使得dismiss()成员函数不再需要,并使代码更具可读性.

既然我不像Alexandrescu先生那样天才或经验丰富,我希望实施SCOPE_FAIL并不像以下那么容易:

~ScopeGuard11(){                      //destructor
    if(std::uncaught_exception()){    //if we are exiting because of an exception
        f_();                         //execute the functor
    }
    //otherwise do nothing
}
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么不呢?

c++ raii loki scopeguard c++11

17
推荐指数
1
解决办法
1820
查看次数

C++:你是否正在使用Loki或Boost进行仿函数?

我一直在阅读Alexandrescu的书,现代C++设计,我对他使用的技术印象深刻,所以我想在我的应用程序中添加Loki库.

然而,经过进一步的调查,我看到我已经在使用的提升提供了很多类似的功能(不是全部,但是,例如,我无法在boost中找到单例)

由于基于策略的设计和仿函数,我最感兴趣的是使用loki.

对我而言,boost和loki都有利有弊.我对loki的主要关注是糟糕的文档(图书馆不再与书籍联系在一起了)但在我看来,loki比某些领域的提升更强大,更灵活(我可能错了)

在选择使用boost或loki作为仿函数和策略之前,我想知道在现实生活中使用它们的人的意见.

有时在纸上看起来非常好但是当你真正使用它们时会有一些缺点:)

c++ boost metaprogramming functor loki

12
推荐指数
3
解决办法
2107
查看次数

std :: function和shared_ptr

我一直在使用Loki的Functor,我最近问了一个关于它的问题(仍然没有答案......)我被告知要使用std :: function,但我更喜欢Loki的Functor实现,因为它也适用于各种各样的指针作为参数(例如std :: shared_ptr).

struct Toto
{
    void foo( int param )
    {
        std::cout << "foo: " << param << std::endl;
    }
};

int
main( int argc, const char** argv )
{
    std::shared_ptr<Toto> ptr = std::make_shared<Toto>();

    Loki::Functor<void, LOKI_TYPELIST_1(int)> func( ptr, &Toto::foo );

    func(1);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用std :: function做到这一点?

c++ loki std-function

7
推荐指数
1
解决办法
3361
查看次数

Loki多方法是否成为C++ 11?

我读使用了现代C++设计泛型编程和设计模式安德烈Alexandrescu的章11多方法的交易正好与我试图解决这个问题.本书的所有源代码都发布在一个名为Loki的库中.

问题是,这本书是相当老的(2001)和有限制的那些交易不再是真实的C++ 11(如该模板参数的数量不能是变量).我试着查看Loki是否已经使用C++ 11进行了重写,但是最后一次修改是在2009年,并且Andrei Alexandrescu的主页上没有更新.然而,在做了一些研究后,我觉得Loki就像Boost一样,它被合并到标准库中.

C++ 11中是否采用了多方法成语或部分内容?

c++ multiple-dispatch loki multimethod c++11

7
推荐指数
1
解决办法
1386
查看次数

为什么C++智能指针实现将引用计数器与指针一起保留在堆上?

阅读Alexandrescu和wikipipidia我看到指针和引用计数器存储在堆上.然后提到引用计数是低效的,因为必须在堆上分配计数器?为什么不将它存储在堆栈中?

c++ boost design-patterns smart-pointers loki

5
推荐指数
1
解决办法
956
查看次数

内存数据库 (lokiJS) 与常规 indexedDB

我正在寻找一个可以存储数据的 indexedDB 包装库。

(具体用途是针对 JavaScript 科尔多瓦应用程序,但也可以在浏览器中运行)

我发现LokiJS似乎可行。然而,LokiJS 说这是一个:

具有持久性的内存 JavaScript 数据存储

但我不明白“内存中”是什么意思。我尝试谷歌搜索,环顾四周,但找不到简洁的解释......

“内存中”indexedDB 与常规 indexedDB 有何不同?

in-memory loki indexeddb cordova lokijs

4
推荐指数
1
解决办法
1813
查看次数