引入额外的type-id作为编译时优化

时间:2016-02-01 08:40:32

标签: c++ c++11

编译持续时间是否存在差异,当我集中使用类似实例化的result_type_t定义如下:

  • 第一种形式:

    template< typename F, typename ...Args >
    using result_type_t = decltype(std::declval< F >()(std::declval< Args >()...));
    
  • 第二种形式:

    template< typename F, typename ...Args >
    struct result_type
    {
        using type = decltype(std::declval< F >()(std::declval< Args >()...));
    };
    
    template< typename F, typename ...Args >
    using result_type_t = typename result_type< F, Args... >::type;
    

我的意思是在同一翻译单元的不同位置对相同的result_type_t< F, Args... >模板参数重复使用F, Args...的相同实例化。对于类型别名的情况,没有引入新的type-id,在我看来,编译器会在遇到它时一次又一次地推断decltype()。对于第二个版本,相应的type-id result_type< F, Args... >保存在&#34;符号表&#34;对于当前翻译单元在其第一次实例化之后,其成员typedef type已准备好立即使用(即&#34;预先计算&#34;)。我是对的吗?

0 个答案:

没有答案