title: Should one never use static inline function?
body: <p>There are two implications of using the <code>inline</code> keyword(§ 7.1.3/4):</p>
  
  <ol>
  <li>It <em>hints</em> the compiler that substitution of function body at the point of call is preferable over the usual function call mechanism.</li>
  <li>Even if the inline substitution is omitted, the other rules(especially w.r.t <em>One Definition Rule</em>) for inline are followed.</li>
  </ol>
  
  <p>Usually any mainstream compiler will substitute function body at the point of call if needed, so marking function <code>inline</code> merely for <code>#1</code> is not really needed.</p>
  
  <p>Further w.r.t <code>#2</code>, As I understand when you declare a function as <code>static inline</code> function, </p>
  
  <p>The <code>static</code> keyword on the function forces the <code>inline</code> function to have an internal linkage(<em>inline functions have external linkage</em>) Each instance of such a function is treated as a separate function(<em>address of each function is different</em>) and each instance of these functions have their own copies of static local variables &amp; string literals(<em>an inline function has only one copy of these</em>)</p>
  
  <p>Thus such a function acts like any other <code>static</code> function and the keyword <code>inline</code> has no importance anymore, it becomes redundant.</p>
  
  <p>So, Practically marking a function <code>static</code> and <code>inline</code> both has no use at all. Either it should be <code>static</code>(<em>not most preferred</em>) or <code>inline</code>(<em>most preferred</em>),<br>
  So, Is using <code>static</code> and <code>inline</code> together on a function <em>practically</em> useless?</p>