2
給定一個功能與一個未使用的(和未命名)的參數:未使用的函數參數是否總是被實例化?
template <typename T> void f(T&&) { /* do something, without using T */ }
int main()
{
std::mutex m;
f(std::lock_guard<std::mutex> { m });
}
保證要實例化的參數,或者是編譯器允許優化它離開?
有什麼區別? –
構造函數可能有副作用。 – user5434231
@ user5434231:爲示例代碼添加副作用。如果沒有副作用,那麼答案變得太簡單了,因爲as-if規則允許所有優化。 –