Thank you, that clears things up. And thanks for adding to the manual!

On Monday, 31 October 2016 21:16:27 UTC-5, vav...@uwaterloo.ca wrote:
>
> Eric,
>
> Possibly the following paragraph from the Julia manual may be relevant.  
> This paragraph is an excerpt from the section on parametric type aliases in 
> the chapter "Types."  I am quite familiar with this paragraph because I 
> authored it in a PR it after I was burned by a similar issue!
>
> -- Steve Vavasis
>
>
> "This declaration of Vector creates a subtype relation Vector{Int} <: 
> Vector. However, it is not always the case that a parametric typealias 
> statement creates such a relation; for example, the statement:
>
> typealias AA{T} Array{Array{T,1},1}
>  
>
> does not create the relation AA{Int} <: AA. The reason is that 
> Array{Array{T,1},1} is not an abstract type at all; in fact, it is a 
> concrete type describing a 1-dimensional array in which each entry is an 
> object of type Array{T,1} for some value of T."
>
>
>
>
>
>
> On Monday, October 31, 2016 at 7:43:58 PM UTC-4, Eric Davies wrote:
>>
>> I am getting confusing behaviour with some complex type aliases while 
>> using Cxx.jl and I was hoping someone could point out what is going on.
>>
>> These are the aliases:
>>
>> typealias CppAWSErrorType{C, I<:Integer} CppTemplate{CppBaseType{Symbol(
>> "Aws::Client::AWSError")}, Tuple{CppEnum{C, I}}}
>> typealias CppAWSError{C, I<:Integer, Q} CppRef{CppAWSErrorType{C, I}, Q}
>>
>> ...
>> aws_raw_error = @cxx list_buckets_outcome->GetError()
>> thetype = AWSCxx.CppAWSError{Symbol("Aws::S3::S3Errors"), Int32, (false, 
>> false, false)}
>>
>> @test typeof(aws_raw_error) <: thetype  # success
>> @test typeof(aws_raw_error) == thetype  # success
>> @test isa(aws_raw_error, thetype)  # success
>> @test typeof(aws_raw_error) <: AWSCxx.CppAWSError  # failure
>> @test isa(aws_raw_error, AWSCxx.CppAWSError)  # failure
>>
>> Can anyone help?
>>
>

Reply via email to