title: What is the difference between static func and class func in Swift?
body: <p>I can see these definitions in the Swift library:</p>
  
  <pre><code>extension Bool : BooleanLiteralConvertible {
      static func convertFromBooleanLiteral(value: Bool) -&gt; Bool
  }
  
  protocol BooleanLiteralConvertible {
      typealias BooleanLiteralType
      class func convertFromBooleanLiteral(value: BooleanLiteralType) -&gt; Self
  }
  </code></pre>
  
  <p>What's the difference between a member function defined as <code>static func</code> and another one defined as <code>class func</code>? Is it simply that <code>static</code> is for static functions of structs and enums, and <code>class</code> for classes and protocols? Are there any other differences that one should know about? What is the rationale for having this distinction in the syntax itself?</p>