//  Copyright © 2015 Rob Rix. All rights reserved.

extension StringLiteralConvertible {
	public init(unicodeScalarLiteral: Self.StringLiteralType) {
		self.init(stringLiteral: unicodeScalarLiteral)
	}

	public init(extendedGraphemeClusterLiteral: Self.StringLiteralType) {
		self.init(stringLiteral: extendedGraphemeClusterLiteral)
	}
}

//  Copyright © 2015 Rob Rix. All rights reserved.

extension StringLiteralConvertible where StringLiteralType == String {
	public init(unicodeScalarLiteral: String) {
		self.init(stringLiteral: unicodeScalarLiteral)
	}

	public init(extendedGraphemeClusterLiteral: String) {
		self.init(stringLiteral: extendedGraphemeClusterLiteral)
	}
}

--- 
+++ 
@@ -1,11 +1,11 @@
 //  Copyright © 2015 Rob Rix. All rights reserved.
 
-extension StringLiteralConvertible where StringLiteralType == String {
-	public init(unicodeScalarLiteral: String) {
+extension StringLiteralConvertible {
+	public init(unicodeScalarLiteral: Self.StringLiteralType) {
 		self.init(stringLiteral: unicodeScalarLiteral)
 	}
 
-	public init(extendedGraphemeClusterLiteral: String) {
+	public init(extendedGraphemeClusterLiteral: Self.StringLiteralType) {
 		self.init(stringLiteral: extendedGraphemeClusterLiteral)
 	}
 }
Use the typealias instead of constraining the extension.
