Benim düşüncem, bir nesnenin/değişkenin türünü sorgulamak için dekolemin kullanıldığı anlamındadır. aşağıdaki gibi wikipedia mevcut örneklerden itibarenNeden decltype varlığında kapsam çözünürlüğü başarısız olur?
:
int i;
decltype(i) x3; // type is int
Ben böyle bir şey yapabileceğini kabul:
class A
{
public:
int a, b;
};
template<typename T>
struct IsClass
{
enum { Yes = std::is_class<T>::value };
enum { No = !Yes };
};
std::vector<A> v;
auto it = v.begin();
IsClass<decltype(it)::value_type>::Yes
tüm bu çizgi yasaldır sonra Çünkü:
Ne yazık ki, aşağıdakileri gerekçe göstermez: error C2039: 'value_type' : is not a member of '
global namespace ''
Kapsam çözme, declype varlığında bu şekilde davranmak için neden yapıldığı ile ilgili herhangi bir fikir?
P.S.: Bu
'gcc' ve' clang' bunu kabul görünmektedir: I (I kullanıyorum hangi http://coliru.stacked-crooked.com/view?id=bc884ca6b1f51d36c231f2eb08dec3ad-f674c1a6d04c632b71a62362c0ccfc51 –
@ShafikYaghmour Sadece MSVC2012 içine bu yapıştırılan Bu etki için bir not eklendi) ve derleme yapmıyor. – Borgleader
MSVC, yine de, gcc ve clang – aaronman