이렇게 두 개의 입력란을 정의 할 수 있습니까? typealias MyViewControllerTypeOne = UIViewController
typealias MyViewControllerTypeTwo = UIViewController, MyGreatProtocol
는 이미 두 번째는이 구문을 사용하여 작동하지 않는 것을 알고있다. 하지만 원하는
간단한 컴파일 타임 차원 분석 라이브러리를 작성하려고합니다. 코드를 변경하지 않고 라이브러리가하는 모든 것을 제거하는 컴파일 옵션을 만들고 싶습니다. 그래서 본질적으로 기본 형식의 자체 버전을 만든 후 해당 기본 형식이 선택되면 실제 형식으로 대체하려고합니다. 이 코드의 최소한의 작업 예를 #include <iostream>
#include <stdint
프로토콜에 유형이 있습니다. 형식 준수를 유형에 추가해야합니까 아니면 대안이 있습니까? 내 목표는 한 번 타입 앨리어스를 선언하는 것입니다. protocol SomeProtocol {
associatedtype T
typealias Closure = (T) -> Void
var blocks: [Closure] { get set }
그래서 두 경우 사이의 결정적인 차이점은 무엇입니까 TypeError: typeassert: expected Dict{K,Array{V,1}}, got
Dict{Int64,Array{Int64,1}}
in include_string(::String, ::String) at loading.jl:441
in eval(::Module, ::A
내가 구조체는 메타 프로그래밍 목적으로 다른 유형에 대한 유형 별칭을 포함시킬 : struct Foo {};
struct WithNestedTypeAlias {
using Foo = Foo;
};
는 그럼 난 템플릿에서 WithNestedTypeAlias::Foo 같은 물건을 할 수있는 등 내가 알고있는 것처럼 , 이러한 유형의 별칭은 유
내 사용자 정의 프로토콜을 준수하는 UIView 유형이 필요합니다. 나는 이런 식으로 작업을 수행하려고 노력하지만, 엑스 코드는 적절한 선언 아니라고 말한다 : typealias ViewThatConformsToProtocol = UIView: MyCustomProtocol
이 너무 작동하지 않습니다 typealias ViewThatConformsToP
: 약자로 type FieldValue = Seq[String] :+: String :+: Int :+: Long :+: CNil
type FieldLeaf = FieldValue :+: SubField :+: CNil
type SubField = Seq[Field]
type Field = (String, FieldLeaf)
을, 스칼라 컴파일러
내가 typename Option_1::Vector<int> v;
을 할 수있는 클래스의 템플릿의 유형 별칭을 정의하지만은 포함하지 않는 Vector<Option_1, int> v;
또는 Similars 참조를 다음과 선호 단어 "typename". 별칭을 정의합니다. template<class Option, class T> using Vector=