typename语句中的类后跟_t(下划线-t)表示什么?

时间:2016-01-22 09:33:07

标签: c++ c++11

我有以下代码块:

template<template<typename ...> class ProxyType_, template<typename> class AttributeExtension_>
struct DefaultAttributeProxyHelper;

template<template<typename ...> class ProxyClass_, template<typename> class AttributeExtension_>
std::shared_ptr<typename DefaultAttributeProxyHelper<ProxyClass_, AttributeExtension_>::class_t> 
createProxyWithDefaultAttributeExtension(const std::string &_domain, const std::string &_instance);

我无法理解下面的陈述中class_t的含义以及该陈述最终暗示的内容

typename DefaultAttributeProxyHelper<ProxyClass_, AttributeExtension_>::class_t

3 个答案:

答案 0 :(得分:1)

这只是用from pydataset import data titanic = data('titanic') 命名数据类型的惯例。它来自typedef语言,没有名称空间,因此必须使用这些约定来避免名称冲突。

答案 1 :(得分:0)

这是一个古老的C约定,用于记住名称:_t表示数据类型,_s表示结构,_e表示枚举,等等。

答案 2 :(得分:0)

五年前问过,查了commonapi代码后给出了一个简短的答案。希望它可以帮助某人: DefaultAttributeProxyHelper 在 capicxx-core-runtime 项目的 AttributeExtension.hpp 中声明。但是,它的定义是使用 commonapi-core-generator 在生成的代码中实现的。如果 capicxx-core-tools 中的 E02Attributes 示例完全执行,您会在 E02AttributesProxy.hpp 中找到 DefaultAttributeProxyHelper 定义及其 class_t 定义

    template<template<typename > class _AttributeExtension>
    struct DefaultAttributeProxyHelper< ::v1::commonapi::E02AttributesProxy,
    _AttributeExtension> {
           typedef typename ::v1::commonapi::E02AttributesProxy<            ::v1::commonapi::E02AttributesExtensions::XAttributeExtension<_AttributeExtension>, 
 ::v1::commonapi::E02AttributesExtensions::A1AttributeExtension<_AttributeExtension>
> class_t;
};