[英]Understanding the scope of a typedef in two structs (functors)
如果我typedef
一個結構(仿)內的一些類型,是范圍typedef
本地的結構?
考慮以下示例,其中我在兩個單獨的函子中將typdef'ed foo設為int
和double
。 這個例子正確嗎?
template <typename T>
struct firstfunctor
{
typedef int foo;
foo operator()(const foo& a, const foo& b)
{
return /*whatever*/
}
};
template <typename T>
struct secondfunctor
{
typedef double foo;
foo operator()(const foo& a, const foo& b)
{
return /*whatever*/
}
};
是的,typedef是作用域的,您可以分別定義成員類型firstfunctor::foo
和secondfunctor::foo
。
是的,typedef是作用域的。 使用它們時,您必須指定范圍。
這適用於對象,類和庫。 范圍通常限於一組{ }
定義的內容。
是。
這也適用於函數和名稱空間。
該類型將是firstfunctor<>::foo
限定的。 您可以將其設為私有,盡管C ++ 11的auto
可以使您解決此問題。
是的,您可以將這些typedef用於有趣的元編程概念,從而將您在類中傳遞給模板(在這種情況下甚至是模板),並可以使用
typename X<T>::foo
獲得您的“動態”類型。
其中X是您的模板化模板參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.