编译持续时间是否存在差异,当我集中使用类似实例化的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;)。我是对的吗?